天天看點

安卓實訓第八天----Activity的生命周期

一、Activity的使用:

通過建立意圖到第二個界面去,還有通過puputExtra來設定要傳過去的資訊的名字還有屬性值,然後通過put.getStringExtra來比對名字來獲得傳過來的值。

二、在Activity中傳回資料,就是将資料從第二個Activity傳回到之前的Activity中,

注意:通過設定請求參數,還有傳回參數,來尋找它對應的Activity。然後通過相應的putExtra還有getExtra來擷取相應的資料。

三、Activity的生命周期:

Activity的生命周期共有七個:

當它在螢幕前台時(位于目前任務堆棧的頂部),它是激活或運作狀态。它就是響應使用者操作的Activity。 

 當它失去焦點但仍然對使用者可見時(如右圖),它處于暫停狀态。即在它之上有另外一個Activity。這個Activity也許是透明的,或者沒有完全覆寫全屏,是以被暫停的Activity仍對使用者可見。暫停的Activity仍然是存活狀态(它保留着所有的狀态和成員資訊并保持和視窗管理器的連接配接),但系統處于極低記憶體時仍然可以殺死這個Activity。 

 完全被另一個Activity覆寫時則處于停止狀态。它仍然保留所有的狀态和成員資訊。然而對使用者是不可見的,是以它的視窗将被隐藏,如果其它地方需要記憶體,則系統經常會殺死這個Activity。 

當Activity從一種狀态轉變到另一種狀态時,會調用以下保護方法來通知這種變化:

void onCreate(Bundle savedInstanceState)

void onStart()

void onRestart()

void onResume()

void onPause()

void onStop()

void onDestroy()

這七個方法定義了Activity的完整生命周期。實作這些方法可以幫助我們監視其中的三個嵌套生命周期循環:

 Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設定所有“全局”狀态以完成初始化,而在onDestroy()中釋放所有系統資源。例如,如果Activity有一個線程在背景運作從網絡下載下傳資料,它會在onCreate()建立線程,而在 onDestroy()銷毀線程。 

 Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,使用者可以在螢幕上看到Activity,盡管它也許并不是位于前台或者也不與使用者進行互動。在這兩個方法之間,我們可以保留用來向使用者顯示這個Activity所需的資源。例如,當使用者不再看見我們顯示的内容時,我們可以在onStart()中注冊一個BroadcastReceiver來監控會影響UI的變化,而在onStop()中來注消。onStart() 和 onStop() 方法可以随着應用程式是否為使用者可見而被多次調用。 

 Activity的前台生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位于前台最上面并與使用者進行互動。Activity會經常在暫停和恢複之間進行狀态轉換——例如當裝置轉入休眠狀态或者有新的Activity啟動時,将調用onPause() 方法。當Activity獲得結果或者接收到新的Intent時會調用onResume() 方法。關于前台生命周期循環的例子請見PPT下方備注欄。

預設情況下,當“螢幕方向”或“鍵盤顯示隐藏” 變化時都會銷毀目前Activity,建立新的Activity。如果不希望重新建立Activity執行個體,可以按如下配置Activity:

<activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize">

上面的android:configChanges屬性指定了要捕獲“螢幕方向”和“鍵盤顯示隐藏”變化,當捕獲到這些變化後會調用Activity的onConfigurationChanged()方法。

預設情況下(沒有配置android:configChanges屬性):

豎屏切橫屏,銷毀目前Activity之後,建立一個新Activity執行個體。

橫屏切豎屏,銷毀目前Activity之後,建立一個新Activity執行個體,新的Activity執行個體很快就被銷毀,接着又會建立一個新Activity執行個體。如果隻希望建立一個執行個體,可以配置android:configChanges="orientation"