Android 3 Activity的生命週期

2021-08-26 03:30:31 字數 2205 閱讀 6377

顯然,我們要用的是android.util.log類,這個類相當的簡單易用,因為它提供的全是一些靜態方法:

log.v(stringtag,stringmsg); //verbose

log.d(stringtag,stringmsg); //debug

log.i(stringtag,stringmsg); //info

log.w(stringtag,stringmsg); //warn

log.e(stringtag,stringmsg); //error

前面的tag是由我們定義的乙個標識,一般可以用「類名_方法名「來定義。

oncreate (one) - onstart (one) - onresume(one)

雖然是第一次啟動,也要走一遍這個resume事件。然後,我們點goto跳到第二個activity two中(前乙個沒有關閉),這時走的次序是:

onfreeze(one) - onpause(one) - oncreate(two) -onstart(two) - onresume(two) - onstop(one)

說明,第二個activitytwo在啟動前,one會經歷乙個:凍結、暫停的過程,在啟動two後,one才會被停止?

然後,我們再點back回到第乙個介面,這時走的次序是:

onpause(two) - onactivityresult(one) - onstart(one) -onrestart(one) - onresume(one) - onstop(two) - ondestroy(two)

說明,返回時,two沒有經歷凍結就直接暫停了,在one接收引數,重啟後,two就停止並被銷毀了。

最後,我們點一下exit退出應用,它的次序是:

onpause(one) - onstop(one) - ondestroy(one)

說明如果我們用了finish的話,不會有freeze,但是仍會經歷pause - stop才被銷毀。

這裡有點疑問的是:為什麼回來時先是start才是restart?可是文件中的圖上畫的卻是先restart再start的啊?不過,後面的**中的描述好象是正確的,start後面總是跟著resume(如果是第一次)或者restart(如果原來被stop掉了,這種情況會在start與resume中插乙個restart)。

下面不跑例子了,看看文件吧。

1.android用activity stack來管理多個activity,所以呢,同一時刻只會有最頂上的那個activity是處於active或者running狀態。其它的activity都被壓在下面了。

除了activitylifecycle以外,android還有乙個processlifecycle的說明:

在記憶體不足的時候,android是會主動清理門戶的,那它又是如何判斷哪個process是可以清掉的呢?文件中也提到了它的重要性排序:

1.最容易被清掉的是empty process,空程序是指那些沒有activity與之繫結,也沒有任何應用程式元件(如services或者intentreceiver)與之繫結的程序,也就是說在這個process中沒有任何activity或者service之類的東西,它們僅僅是作為乙個cache,在啟動新的activity時可以提高速度。它們是會被優先清掉的。因此建議,我們的後台操作,最好是作成service的形式,也就是說應該在activity中啟動乙個service去執行這些操作。

2.接下來就是background activity了,也就是被stop掉了那些activity所處的process,那些不可見的activity被清掉的確是安全的,系統維持著乙個lru列表,多個處於background的activity都在這裡面,系統可以根據lru列表判斷哪些activity是可以被清掉的,以及其中哪乙個應該是最先被清掉。不過,文件中提到在這個已被清掉的activity又被重新建立的時候,它的oncreate會被呼叫,引數就是onfreeze時的那個bundle。不過這裡有一點不明白的是,難道這個activity被killed時,android會幫它保留著這個bundle嗎?

4.接著又輪到那些visible activity了,或者說visible process。前面也談到這個情況,被paused的activity也是有可能會被系統清掉,不過相對來說,它已經是處於乙個比較安全的位置了。

5.最安全應該就是那個foreground activity了,不到迫不得已它是不會被清掉的。這種process不僅包括resume之後的activity,也包括那些onreceiveintent之後的intentreceiver例項。

android基本程式單元Activity

activity提供了和使用者互動的視覺化介面,建立乙個activity一般都繼承了activity,覆蓋了activity的oncreat方法.在該方法中呼叫setcontentview的方法展示要顯示的檢視.呼叫findviewbyid方法例項化元件.activity只有在清單檔案中宣告才能使用...

android 顯式 隱式啟動activity

android啟動activity分為顯式啟動和隱式啟動。顯式啟動時,指定被啟動activity類,系統啟動被指定的activity類。隱式啟動時,指定action category,系統會拿action category去androidmanifest.xml中匹配,匹配的activity啟動。某...

android開發之路3

intent intent new intent intent.action call,uri.parse tel textstr startactivity intent android minline 控制textview的顯示行數 1.狀態列通知 2.對話方塊通知 3.吐絲 toast sms...