版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第
4章
Android生命周期本章學習目標
了解Android系統(tǒng)的進程優(yōu)先級的變化方式了解Android系統(tǒng)的四大基本組件了解Activity的生命周期中各狀態(tài)的變化關(guān)系掌握Activity事件回調(diào)函數(shù)的作用和調(diào)用順序掌握Android應用程序的調(diào)試方法和工具4.1程序生命周期Android應用程序的生命周期程序的生命周期是在Android系統(tǒng)中進程從啟動到終止的所有階段,也就是Android程序啟動到停止的全過程程序的生命周期由Android系統(tǒng)進行調(diào)度和控制的
Android應用程序的生命周期Android應用程序不能控制它自己的生命周期。應用程序組件必須監(jiān)聽應用程序狀態(tài)的變化并做出適當?shù)姆磻?,特別要注意為隨時被終止做好準備。默認情況下,每一個Android應用程序都是通過它自己的進程運行的,每一個進程都是Dalvik的一個單獨實例。每個應用程序的內(nèi)存和進程管理都是由運行時專門處理的。4.1程序生命周期Android應用程序的生命周期Android系統(tǒng)一般是運行在資源受限的硬件平臺上,因此資源管理對Android系統(tǒng)至關(guān)重要。Android系統(tǒng)主動管理資源,為了保證高優(yōu)先級程序正常運行,可以在無任何警告的情況下終止優(yōu)先級低的程序,并回收其使用的系統(tǒng)資源,這樣就可以為高優(yōu)先級的應用程序(通常是當時正直接和用戶進行交互的應用程序)釋放資源。因此Android程序并不能控制自身的生命周期,而完全是由Android系統(tǒng)進行調(diào)試和控制的。4.1程序生命周期Android應用程序的生命周期Android系統(tǒng)盡可能地不主動終止應用程序,即使生命周期結(jié)束的程序(空進程)也會保存在內(nèi)存中,以便再次快速啟動。但在內(nèi)存緊張時,系統(tǒng)會根據(jù)進程的優(yōu)先級清除進程,回收系統(tǒng)資源?;厥障到y(tǒng)資源時,進程被終止的順序是由其承載(hosted)應用程序的優(yōu)先級所決定的。4.1程序生命周期Android系統(tǒng)中的進程優(yōu)先級由高到低前臺進程可見進程服務進程后臺進程空進程4.1程序生命周期前臺進程前臺進程是Android系統(tǒng)中最重要的進程,是與用戶正在交互的進程,包含以下四種情況進程中的Activity正在與用戶進行交互進程服務被Activity調(diào)用,而且這個Activity正在與用戶進行交互進程服務正在執(zhí)行聲明周期中的回調(diào)函數(shù),如onCreate()、onStart()或onDestroy()進程的BroadcastReceiver正在執(zhí)行onReceive()函數(shù)Android系統(tǒng)在多個前臺進程同時運行時,可能會出現(xiàn)資源不足的情況,此時會清除部分前臺進程,保證主要的用戶界面能夠及時響應4.1程序生命周期可見進程可見進程指部分程序界面能夠被用戶看見,卻不在前臺與用戶交互,不響應界面事件的進程如果一個進程包含服務,且這個服務正在被用戶可見的Activity調(diào)用,此進程同樣被視為可見進程Android系統(tǒng)一般存在少量的可見進程,只有在特殊的情況下,Android系統(tǒng)才會為保證前臺進程的資源而清除可見進程4.1程序生命周期服務進程服務進程是指包含已啟動服務的進程沒有用戶界面在后臺長期運行Android系統(tǒng)除非不能保證前臺進程或可視進程所必要的資源,否則不強行清除服務進程4.1程序生命周期后臺進程后臺進程是指不包含任何已經(jīng)啟動的服務,而且沒有任何用戶可見的Activity的進程Android系統(tǒng)中一般存在數(shù)量較多的后臺進程,在系統(tǒng)資源緊張時,系統(tǒng)將優(yōu)先清除用戶較長時間沒有見到的后臺進程4.1程序生命周期空進程空進程是不包含任何活躍組件的進程空進程在系統(tǒng)資源緊張時會被首先清除但為了提高Android系統(tǒng)應用程序的啟動速度,Android系統(tǒng)會將生存期結(jié)束的進程仍保存在系統(tǒng)內(nèi)存中,在用戶重新啟動該程序時,空進程會被重新使用4.1程序生命周期除了以上的優(yōu)先級外,以下兩方面也決定他們的優(yōu)先級進程的優(yōu)先級取決于所有組件中的優(yōu)先級最高的部分進程的優(yōu)先級會根據(jù)與其他進程的依賴關(guān)系而變化4.1程序生命周期4.2
Android組件組件是可以調(diào)用的基本功能模塊Android應用程序就是由組件組成的在程序設(shè)計時,在其Manifest.xml中聲明可共享的組件,聲明后其他應用程序可以直接調(diào)用這些共享組件。Android系統(tǒng)有四個重要的組件,分別是Activity、Service、BroadcastReceiver和ContentProviderActivityActivity是Android程序的呈現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的界面事件Android應用程序可以包含一個或多個Activity,一般在程序啟動后會呈現(xiàn)一個Activity,用于提示用戶程序已經(jīng)正常啟動在界面上的表現(xiàn)形式:全屏窗體,非全屏懸浮窗體,對話框ServiceService用于沒有用戶界面,但需要長時間在后臺運行的應用4.2
Android組件BroadcastReceiverBroadcastReceiver是用來接受并響應廣播消息的組件不包含任何用戶界面可以通過啟動Activity或者Notification通知用戶接收到重要信息Notification能夠通過多種方法提示用戶,包括閃動背景燈、震動設(shè)備、發(fā)出聲音或在狀態(tài)欄上放置一個持久的圖標4.2
Android組件ContentProviderContentProvider是Android系統(tǒng)提供的一種標準的共享數(shù)據(jù)的機制,應用程序可以通過ContentProvider訪問其他應用程序的私有數(shù)據(jù)私有數(shù)據(jù)可以是存儲在文件系統(tǒng)中的文件,也可以是SQLite中的數(shù)據(jù)庫Android系統(tǒng)內(nèi)部也提供一些內(nèi)置的ContentProvider,能夠為應用程序提供重要的數(shù)據(jù)信息,例如聯(lián)系人信息和通信記錄等。4.2
Android組件每個Android應用都由一個或多個組件組成。當要用到某個組件的時候,Android操作系統(tǒng)就會將它們實例化。在擁有特定權(quán)限的情況下,其他應用程序同樣也可以使用它們。除了ContentProvider組件,每個組件都需要一個叫做Intent的異步消息來激活。Intent可包含一組(Bundle)描述該組件的輔助數(shù)據(jù)。這也提供了一種在組件之間傳遞消息的方法。4.2
Android組件Android操作系統(tǒng)集成了很多功能(某些功能甚至并非和某個應用程序直接相關(guān),如呼入電話)。每個組件都具有以下生命周期,包括創(chuàng)建(create),獲得焦點(focus),失去焦點(defocus)和銷毀(destory)。我們可以通過改寫程序默認的行為,使交互對用戶更加友好,比如保存變量或者恢復用戶界面元素。4.2
Android組件組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷毀的整個過程在生命周期中,組件會在可見、不可見、活動、非活動等狀態(tài)中不斷變化4.2
Android組件4.3
Activity生命周期Activity生命周期Activity生命周期指Activity從啟動到銷毀的過程Activity表現(xiàn)為四種狀態(tài),分別是活動狀態(tài)、暫停狀態(tài)、停止狀態(tài)和非活動狀態(tài)活動狀態(tài),Activity在用戶界面中處于最上層,完全能不用戶看到,能夠與用戶進行交互暫停狀態(tài),Activity在界面上被部分遮擋,該Activity不再處于用戶界面的最上層,且不能夠與用戶進行交互停止狀態(tài),Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋非活動狀態(tài)不在以上三種狀態(tài)中的Activity則處于非活動狀態(tài)Activity的四種狀態(tài)的變換關(guān)系圖4.3
Activity生命周期Activity棧遵循“后進先出”的規(guī)則4.3
Activity生命周期隨著用戶在界面的操作和系統(tǒng)對資源的管理,Activity不斷變化在Activity棧中的位置,其狀態(tài)也不斷在4種狀態(tài)中轉(zhuǎn)變。開發(fā)人員不能控制程序處于哪個狀態(tài),這是由系統(tǒng)管理的,但是,改變狀態(tài)時,系統(tǒng)會通過onXXX()方法通知開發(fā)人員,這些onXXX方法就是所謂的回調(diào)函數(shù)。為了能夠讓Android程序了解自身狀態(tài)的變化,Android系統(tǒng)提供了多個事件回調(diào)函數(shù),在事件回調(diào)函數(shù)插入相關(guān)代碼,就可以在Activity狀態(tài)變化時完成適當?shù)墓ぷ鳌?.3
Activity生命周期事件的回調(diào)函數(shù)publicclassMyActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}4.3
Activity生命周期Activity生命周期的事件回調(diào)函數(shù)函數(shù)是否
可終止說明onCreate()否Activity啟動后第一個被調(diào)用的函數(shù),常用來進行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復信息等。onStart()否當Activity顯示在屏幕上時,該函數(shù)被調(diào)用。onRestart()否當Activity從停止狀態(tài)進入活動狀態(tài)前,調(diào)用該函數(shù)。onResume()否當Activity能夠與用戶交互,接受用戶輸入時,該函數(shù)被調(diào)用。此時的Activity位于Activity棧的棧頂。onPause()是當Activity進入暫停狀態(tài)時,該函數(shù)被調(diào)用。一般用來保存持久的數(shù)據(jù)或釋放占用的資源。onStop()是當Activity進入停止狀態(tài)時,該函數(shù)被調(diào)用。onDestroy()是在Activity被終止前,即進入非活動狀態(tài)前,該函數(shù)被調(diào)用。4.3
Activity生命周期Activity狀態(tài)保存/恢復的事件函數(shù)函數(shù)是否
可終止說明onSaveInstanceState()否Android系統(tǒng)因資源不足終止Activity前調(diào)用該函數(shù),用以保存Activity的狀態(tài)信息,供onRestoreInstanceState()或onCreate()恢復之用。onRestoreInstanceState()否恢復onSaveInstanceState()保存的Activity狀態(tài)信息,在onStart()和onResume()之間被調(diào)用。4.3
Activity生命周期Activity事件回調(diào)函數(shù)的調(diào)用順序在Activity的生命周期中,并不是所有的事件回調(diào)函數(shù)都將被執(zhí)行,但如果被調(diào)用則一定遵循圖中所描述的調(diào)用順序。4.3
Activity生命周期Activity事件回調(diào)函數(shù)的調(diào)用順序Activity生命周期分類Activity的生命周期可分為全生命周期、可視生命周期和活動生命周期每種生命周期中包含不同的事件回調(diào)函數(shù)4.3
Activity生命周期全生命周期全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結(jié)束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統(tǒng)會不調(diào)用onDestroy()函數(shù),而直接終止進程4.3
Activity生命周期可視生命周期可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結(jié)束于onStop()4.3
Activity生命周期可視生命周期onStart()一般用來初始化或啟動與更新界面相關(guān)的資源onStop()一般用來暫?;蛲V挂磺信c更新用戶界面相關(guān)的線程、計時器和服務onRestart()函數(shù)在onSart()前被調(diào)用,用來在Activity從不可見變?yōu)榭梢姷倪^程中,進行一些特定的處理過程onStart()和onStop()會被多次調(diào)用onStart()和onStop()也經(jīng)常被用來注冊和注銷BroadcastReceiver4.3
Activity生命周期活動生命周期活動生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause()在Activity的狀態(tài)變換過程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個函數(shù)中應使用更為簡單、高效的代碼4.3
Activity生命周期活動生命周期onPause()是第一個被標識為“可終止”的函數(shù)在onPause()返回后,onStop()和onDestroy()隨時能被Android系統(tǒng)終止onPause()常用來保存持久數(shù)據(jù),如界面上的用戶的輸入信息等4.3
Activity生命周期onPause()和onSaveInstanceState()的區(qū)別這兩個函數(shù)都可以用來保存界面的用戶輸入數(shù)據(jù),他們的區(qū)別在于onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中的onSaveInstanceState()主要用來保存動態(tài)的狀態(tài)信息,信息一般保存在Bundle中Bundle是能夠保存多種格式數(shù)據(jù)的對象在onSaveInstanceState()保存在Bundle中的數(shù)據(jù),系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時,會同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù)4.3
Activity生命周期Theactivitylifecycle.Thefigureillustratestheseloopsandthepathsanactivitymighttakebetweenstates.Therectanglesrepresentthecallbackmethodsyoucanimplementtoperformoperationswhentheactivitytransitionsbetweenstates.舉例:建立一個新的Android工程工程名稱:ActivityLifeCycle包名稱:cslg.jtxy.ActivityLifeCycleActivity名稱:ActivityLifeCycle4.3
Activity生命周期ActivityLifeCycle.java文件的代碼packagecslg.jtxy.ActivityLifeCycle;
importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;
publicclassActivityLifeCycleextendsActivity{privatestaticStringTAG="LIFTCYCLE";@Override//完全生命周期開始時被調(diào)用,初始化ActivitypublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.i(TAG,"(1)onCreate()");}
4.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//可視生命周期開始時被調(diào)用,對用戶界面進行必要的更改
publicvoidonStart(){
super.onStart();
Log.i(TAG,"(2)onStart()");}
@Override//在onStart()后被調(diào)用,用于恢復onSaveInstanceState()保存的用戶界面信息
publicvoidonRestoreInstanceState(BundlesavedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"(3)onRestoreInstanceState()");
}
4.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在活動生命周期開始時被調(diào)用,恢復被onPause()停止的用于界面更新的資源
publicvoidonResume(){
super.onResume();
Log.i(TAG,"(4)onResume()");
}
@Override//在onResume()后被調(diào)用,保存界面信息
publicvoidonSaveInstanceState(BundlesavedInstanceState){
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG,"(5)onSaveInstanceState()");
}
4.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在重新進入可視生命周期前被調(diào)用,載入界面所需要的更改信息
publicvoidonRestart(){
super.onRestart();
Log.i(TAG,"(6)onRestart()");
}
@Override//在活動生命周期結(jié)束時被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的資源
publicvoidonPause(){
super.onPause();
Log.i(TAG,“(7)onPause()”);、
}
4.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在可視生命周期結(jié)束時被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源publicvoidonStop(){super.onStop();Log.i(TAG,"(8)onStop()");}
@Override//在完全生命周期結(jié)束時被調(diào)用,釋放資源,包括線程、數(shù)據(jù)連接等
publicvoidonDestroy(){super.onDestroy();Log.i(TAG,"(9)onDestroy()");}}4.3
Activity生命周期ActivityLifeCycle.java文件的代碼上面的程序主要通過在生命周期函數(shù)中添加“日志點”的方法進行調(diào)試,程序的運行結(jié)果將會顯示在LogCat中為了顯示結(jié)果易于觀察和分析,在LogCat設(shè)置過濾器LifeCycleFilter,過濾方法選擇byLogTag,過濾關(guān)鍵字為LIFTCYCLE4.3
Activity生命周期全生命周期啟動和關(guān)閉ActivityLifeCycle的LogCat輸出啟動ActivityLifeCycle按下模擬器的“返回鍵”關(guān)閉ActivityLifeCycleLogCat輸出結(jié)果4.3
Activity生命周期全生命周期函數(shù)的調(diào)用順序:onCreate()→onStart()→onResume()→onPause()→onStop()→onDestroy()啟動程序時調(diào)用onCreate()函數(shù)分配資源調(diào)用onStart()將Activity顯示在屏幕上調(diào)用onResume()獲取屏幕焦點按“返回鍵”時(結(jié)束程序)調(diào)用onPause()、onStop()和onDestroy(),釋放資源并銷毀進程4.3
Activity生命周期可視生命周期狀態(tài)轉(zhuǎn)換(重新恢復程序的運行)啟動ActivityLifeCycle按“呼出/接聽鍵”啟動內(nèi)置的撥號程序再通過“返回鍵”退出撥號程序ActivityLifeCycle重新顯示在屏幕中可視生命周期的LogCat輸出結(jié)果4.3
Activity生命周期可視生命周期函數(shù)的調(diào)用順序(當撥號程序被啟動后):
onSaveInstanceState()→onPause()→onStop()→onRestart()→onStart()→onResume()撥號程序被啟動后的順序調(diào)用onSaveInstanceState()函數(shù)保存Activity狀態(tài)調(diào)用onPause()和onStop(),停止對不可見Activity的更新關(guān)閉撥號程序后調(diào)用onRestart()恢復需要界面上需要更新的信息調(diào)用onStart()和onResume()重新顯示Activity,并接受用戶交互4.3
Activity生命周期活動生命周期活動生命周期的LogCat輸出(重新恢復)啟動ActivityLifeCycle通過“掛斷鍵”使模擬器進入休眠狀態(tài)再通過“掛斷鍵”喚醒模擬器LogCat的輸出結(jié)果4.3
Activity生命周期活動生命周期函數(shù)調(diào)用順序如下:onSaveInstanceState()→onPause()→onResume()調(diào)用onSaveInstanceState()保存Activity的狀態(tài)調(diào)用onPause()停止與用戶交互調(diào)用onResume()恢復與用戶的交互4.3
Activity生命周期使用其他的生命周期方法
下面的例子提供了另一種查看活動中activity生命周期的簡單方法。為便于演示,每個被重載的方法都有明確說明,通過加入Toast命令,使得該方法在啟動的時候,在屏幕上顯示。4.3
Activity生命周期使用其他的生命周期方法
在Android設(shè)備上運行以下代碼,并嘗試各種情況,特別是注意以下幾種操作:顛倒屏幕方向(在模擬器上,按Ctrl+F11或小鍵盤上的7鍵或9鍵),將結(jié)束并重新運行activity;按下Home按鈕將暫停activity,但并不結(jié)束;按下程序圖標可能會開啟新的activity實例,即使先前的activity沒有關(guān)閉;屏幕處于休眠態(tài)時會暫停activity,屏幕重新喚醒時會繼續(xù)該activity(類似于呼入電話)。4.3
Activity生命周期使用其他的生命周期方法
ActivityLifecycle.javapackagecslg.jtxy.ActivityLifecycle;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.Toast;publicclassActivityLifecycleextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Toast.makeText(this,"onCreate",Toast.LENGTH_SHORT).show();}4.3
Activity生命周期使用其他的生命周期方法
ActivityLifecycle.java@OverrideprotectedvoidonStart(){ super.onStart(); Toast.makeText(this,"onStart",Toast.LENGTH_SHORT).show();}
@OverrideprotectedvoidonResume(){ super.onResume(); Toast.makeText(this,"onResume",Toast.LENGTH_SHORT).show();}4.3
Activity生命周期使用其他的生命周期方法
ActivityLifecycle.java@OverrideprotectedvoidonRestart(){ super.onRestart(); Toast.makeText(this,"onRestart",Toast.LENGTH_SHORT).show();}
@OverrideprotectedvoidonPause(){ super.onPause(); Toast.makeText(this,"onPause",Toast.LENGTH_SHORT).show();}4.3
Activity生命周期使用其他的生命周期方法
ActivityLifecycle.java@OverrideprotectedvoidonStop(){ super.onStop(); Toast.makeText(this,"onStop",Toast.LENGTH_SHORT).show();}
@OverrideprotectedvoidonDestroy(){ super.onDestroy(); Toast.makeText(this,"onDestroy",Toast.LENGTH_SHORT).show();}}4.3
Activity生命周期使用其他的生命周期方法
啟動程序過程的界面
4.3
Activity生命周期使用其他的生命周期方法
按“Home”鍵,回到“Home”頁面4.3
Activity生命周期使用其他的生命周期方法
重新點擊該程序圖標,返回到本程序的界面。4.3
Activity生命周期使用其他的生命周期方法
按返回鍵,退出本程序的過程界面。4.3
Activity生命周期4.4程序調(diào)試
Android系統(tǒng)提供了兩種調(diào)試工具LogCat和DevTools,用于定位、分析及修復程序中出現(xiàn)的錯誤4.4.1
LogCatLogCat是用來獲取系統(tǒng)日志信息的工具,并可以顯示在Eclipse集成開發(fā)環(huán)境中功能:能夠捕獲的信息包括Dalvik虛擬機產(chǎn)生的信息、進程信息、ActivityManager信息、PackagerManager信息、Homeloader信息、WindowsManager信息、Android運行時信息和應用程序信息等4.4.1
LogCat打開方式:Window→ShowView→Other打開ShowView的選擇菜單,然后在Andoird→LogCat中選擇LogCat4.4程序調(diào)試4.4.1
LogCatLogCat打開后,便顯示在Eclipse的下方區(qū)域4.4程序調(diào)試4.4.1
LogCatLogCat的右上方的五個字母表示五種不同類型的日志信息
,他們的級別依次增高
[V]:詳細(Verbose)信息
[D]:調(diào)試(Debug)信息[I]:通告(Info)信息
[W]:警告(Warn)信息[E]
:錯誤(Error)信息4.4程序調(diào)試4.4.1
LogCat在LogCat中,用戶可以通過五個字母圖標選擇顯示的信息類型,級別高于所選類型的信息也會在LogCat中顯示,但級別低于所選類型的信息則不會被顯示4.4程序調(diào)試4.4.1
LogCatLogCat提供了“過濾”功能,在右上角的“+”號和“-”號,分別是添加和刪除過濾器。用戶可以根據(jù)日志信息的標簽(Tag)、產(chǎn)生日志的進程編號(Pid)或信息等級(Level),對顯示的日志內(nèi)容進行過濾Eclipse中的LogCat4.4程序調(diào)試4.4.1
LogCat程序調(diào)試原理引入android.util.Log包使用Log.v()、
Log.d()、
Log.i()、Log.w()和
Log.e()五個函數(shù)在程序中設(shè)置“日志點”當程序運行到“日志點”時,應用程序的日志信息便被發(fā)送到LogCat中判斷“日志點”信息與預期的內(nèi)容是否一致進而判斷程序是否存在錯誤
Log.v()用來記錄詳細信息,Log.d()用來記錄調(diào)試信息,Log.i()用來記錄通告信息,Log.w()用來記錄警告信息,Log.e()用來記錄通錯誤信息4.4程序調(diào)試4.4.1
LogCat演示了Log類的具體使用方法packagecslg.jtxy.LogCat;
importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;
publicclassLogCatextendsActivity{finalstaticStringTAG="LOGCAT";@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);
4.4程序調(diào)試4.4.1
LogCat程序第5行引入android.util.Log包第8行定義標簽。標簽幫助用戶在LogCat中找到目標程序生成的日志信息,同時也能夠利用標簽對日志進行過濾第14行記錄一個詳細信息,Log.v()函數(shù)的第一個參數(shù)是日志的標簽,第二個參數(shù)是實際的信息內(nèi)容第15行到第18行分別產(chǎn)生了調(diào)試信息、通告信息、警告信息和錯誤信息Log.v(TAG,"Verbose");Log.d(TAG,"Debug");Log.i(TAG,"Info");Log.w(TAG,"Warn");Log.e(TAG,"Error");}}4.4程序調(diào)試4.4.1
LogCatLogCat工程的運行結(jié)果LogCat對不同類型的信息使用了不同的顏色加以區(qū)別4.4程序調(diào)試4.4.1
LogCat添加過濾器單擊“+”填入過濾器的名稱:LogcatFilter設(shè)置過濾條件為“標簽=LOGCAT”4.4程序調(diào)試4.4.1
LogCat
LogCat過濾后的輸入結(jié)果無論什么類型的日志信息,屬于哪一個進程,只要標簽為LOGCAT,都將顯示在LogcatFilter區(qū)域內(nèi)4.4程序調(diào)試4.4.2DevToolsDevTools是用于調(diào)試和測試的工具包括了一系列用戶各種用途的小工具:DevelopmentSettings、ExceptionBrowser、GoogleLoginService、Instrumentation、MediaScanner、PackageBrowser、PointerLocation、RawImageViewer、Runningprocesses和TerminalEmulator4.4程序調(diào)試4.4.2DevToolsDevTools的使用界面4.4程序調(diào)試4.4.2DevTools
DevelopmentSettingsDevelopmentSettings中包含了程序調(diào)試的相關(guān)選項單擊功能前面選擇框,出現(xiàn)綠色的“對號”表示功能啟用模擬器會自動保存設(shè)置4.4程序調(diào)試4.4.2DevToolsDevelopmentSettings選項選項說明DebugApp為Waitfordebugger選項指定應用程序,如果不指定(選擇none),Waitfordebugger選項將適用于所有應用程序。DebugApp可以有效的防止Android程序長時間停留在斷點而產(chǎn)生異常。Waitfordebugger阻塞加載應用程序,直到關(guān)聯(lián)到調(diào)試器(Debugger)。用于在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天文題目及答案
- 物業(yè)垃圾廣告車管理制度(3篇)
- 石化靜設(shè)備管理制度(3篇)
- 獸藥營銷培訓
- 胖東來管理制度工作劃分(3篇)
- 蠟燭失火與消防管理制度(3篇)
- 鐵路維修小車的管理制度(3篇)
- 飲用水制售管理制度(3篇)
- 《GA 996-2012警力輸送車》專題研究報告
- 獸醫(yī)局防疫員培訓課件
- 國家安全生產(chǎn)十五五規(guī)劃
- 河南省2025年普通高等學校對口招收中等職業(yè)學校畢業(yè)生考試語文試題 答案
- 馬口鐵印鐵制罐工藝流程詳解課件
- 預應力管樁-試樁施工方案
- GB/T 16938-2008緊固件螺栓、螺釘、螺柱和螺母通用技術(shù)條件
- FZ/T 82006-2018機織配飾品
- 《食品包裝學(第三版)》教學PPT課件整套電子講義
- 全尺寸測量報告FAI
- 新教材教科版五年級上冊科學全冊課時練(課后作業(yè)設(shè)計)
- pep人教版六年級英語上冊《Recycle2》教案教學設(shè)計
- 過電壓抑制柜配電聚優(yōu)柜控制器
評論
0/150
提交評論