本篇文章給大家分享的是有關(guān)Android非異常情況下Activity的生命周期有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開(kāi)發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);做網(wǎng)站、成都網(wǎng)站制作收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十年的成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司。Activity非異常情況下的生命周期是指,用戶(hù)正常參與UI交互的情況下,Activity所經(jīng)過(guò)的生命周期的改變;一般情況下,Activity會(huì)經(jīng)過(guò)以下幾個(gè)生命周期。
1、OnCreate(): 表示Activity正在創(chuàng)建,這個(gè)是生命周期的第一個(gè)方法,該方法只調(diào)用一次,在這個(gè)方法中,一般做變量初始化的操作,例如綁定一個(gè)Button控件的Id等。
2、onRestart(): 表示Activity正在重新啟動(dòng),一般情況下,如果最前面的Activity從不可見(jiàn)狀態(tài)變?yōu)榭梢?jiàn)狀態(tài)時(shí),onRestart()這個(gè)方法都會(huì)被調(diào)用,一般情況下都是用戶(hù)操作導(dǎo)致的;例如,當(dāng)前這個(gè)Activity叫A,用戶(hù)啟動(dòng)了一個(gè)新的Activity叫B,這時(shí)A就會(huì)暫停,也就是onPause()和 onStop()被調(diào)用了,接著用戶(hù)又回到了這個(gè)A時(shí),就會(huì)出現(xiàn)這種情況。
3、onStart(): 表示Activity正在被啟動(dòng),將要開(kāi)始,這時(shí)的Activity是可見(jiàn)狀態(tài)了,但是沒(méi)有出呈現(xiàn)到前臺(tái)的,還不能和用戶(hù)打交道,其實(shí)Activity已經(jīng)顯示出來(lái)了,只是我們看不到而已
4、onResume(): 表示Activity已經(jīng)可見(jiàn)了,也就是呈現(xiàn)在前臺(tái)上,即我們?nèi)庋勰軌蚩吹靡?jiàn)了。我們要留意這個(gè)onResume()和onStart()的區(qū)別,onStart()和onResume()都表示是Activity的可見(jiàn)狀態(tài),但是調(diào)用onStart()方法時(shí)Activity是在后臺(tái),而調(diào)用onResume()方法時(shí)Activity是在前臺(tái)的。
5、onPause(): 表示Activity正在停止,這時(shí)候Activity的狀態(tài)是不可見(jiàn)的,但是還是顯示在前臺(tái)的;一般情況下,下一個(gè)生命周期的方法onStop()就會(huì)被調(diào)用。在這里可以做一些存儲(chǔ)數(shù)據(jù)的操作,但不可以過(guò)于耗時(shí),因?yàn)闀?huì)影響Activity顯示的效果。
6、onStop(): 表示Activity即將停止,這時(shí)候Activity的狀態(tài)是不可見(jiàn)的,也不是顯示在前臺(tái)上了,在這里可以做一些稍微重量級(jí)的回收工作,也不可以太耗時(shí)。
7、onDestroy(): 表示Activity即將被銷(xiāo)毀,這是Activity生命周期的最后一個(gè)方法,在這里可以做一些資源的釋放。
下面以一張圖展示非異常情況下生命周期調(diào)用的方法
好了,前面分析了那么多,我們來(lái)寫(xiě)一個(gè)小demo看一下效果。
(1)、首先創(chuàng)建第一個(gè)Activity,名叫ActivityA,代碼如下所示:
var activityName: String? = "ActivityA" val TAG: String? = "Activity" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_a) Log.d(TAG,activityName + "---------onCreate") } override fun onRestart() { super.onRestart() Log.d(TAG,activityName + "---------onRestart") } override fun onStart() { super.onStart() Log.d(TAG,activityName + "---------onStart") } override fun onResume() { super.onResume() Log.d(TAG,activityName + "---------onResume") } override fun onPause() { super.onPause() Log.d(TAG,activityName + "---------onPause") } override fun onStop() { super.onStop() Log.d(TAG,activityName + "---------onStop") } override fun onDestroy() { super.onDestroy() Log.d(TAG,activityName + "---------onDestroy") } public fun onClick(v: View) { var clazz = ActivityB:: class.java var it: Intent = Intent(this,clazz) startActivity(it) }
對(duì)應(yīng)的ActivityA的activity_a.xml文件如下所示:
(2)、創(chuàng)建另外一個(gè)Activity,名叫ActivityB,如下所示:
val TAG: String? = "Activity" var activityName: String? = "ActivityB" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_b) Log.d(TAG,activityName + "---------onCreate") } override fun onRestart() { super.onRestart() Log.d(TAG,activityName + "---------onRestart") } override fun onStart() { super.onStart() Log.d(TAG,activityName + "---------onStart") } override fun onResume() { super.onResume() Log.d(TAG,activityName + "---------onResume") } override fun onPause() { super.onPause() Log.d(TAG,activityName + "---------onPause") } override fun onStop() { super.onStop() Log.d(TAG,activityName + "---------onStop") } override fun onDestroy() { super.onDestroy() Log.d(TAG,activityName + "---------onDestroy") }
ActivityB對(duì)應(yīng)的activity_b.xml的文件如下所示~~
第一次運(yùn)行的結(jié)果如下所示~~~~
以下是相應(yīng)的日志打印
01-08 11:48:39.068 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onCreate 01-08 11:48:39.069 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStart 01-08 11:48:39.069 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onResume
點(diǎn)擊“點(diǎn)擊此按鈕,可啟動(dòng)新的Activity”按鈕,效果圖如下所示
相應(yīng)的日志如下所示:
01-08 11:57:44.455 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onPause 01-08 11:57:44.465 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onCreate 01-08 11:57:44.466 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onStart 01-08 11:57:44.466 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onResume 01-08 11:57:44.843 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStop
點(diǎn)擊返回鍵,返回ActivityA,日志如下所示:
01-08 12:22:40.318 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onPause 01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onRestart 01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStart 01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onResume 01-08 12:22:41.125 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onStop 01-08 12:22:41.125 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onDestroy
以上就是Android非異常情況下Activity的生命周期有哪些,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。