版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Android 之 Activity 生命周期史無前例的詳細(xì)介紹, 新手 必必必看。Android 的 Activity 生命周期是一個(gè)非常重要的知識(shí)點(diǎn), 但是 由于 Activity 的狀態(tài)眾多,而且狀態(tài)直接的切換類型也十分 的眾多,導(dǎo)致Activity 的方法很多,這就給新手學(xué)習(xí)并理解Activity 造成了一定的難度,如果你能認(rèn)真讀完我這一篇博 文,那么我相信你一定能對Activity 的理解達(dá)到一個(gè)嶄新的高度,ok ,下面是我對Activity 的理解。要想透徹的理解 Activity ,那么必須了解一個(gè)計(jì)算機(jī)的名詞,“堆棧” , 因?yàn)?Activity 的狀態(tài)切換方式十分類似于數(shù)據(jù)結(jié)
2、構(gòu)中的堆棧。1、首先介紹什么是堆棧,及其特點(diǎn)。2、介紹Activity 的七個(gè)狀態(tài)方法。結(jié)合堆棧, 詳解 Activity 狀態(tài)直接的切換和各個(gè)方法的調(diào)用。、下面我來介紹一下什么是“堆棧” 。堆棧 可以簡單的理解成一個(gè)的 “竹筒” ,只不過種竹筒是一端封閉另一端開啟的,如圖所示:透過這個(gè)竹筒我們不難發(fā)現(xiàn),因?yàn)槎褩5囊欢耸欠忾]的,所以要想往里面放東西,必須從一端放,取的時(shí)候也只能從一端取,就是這 堆棧最重要的特點(diǎn), “后進(jìn)先出” 。、下面我要介紹的是Activity 的七個(gè)狀態(tài)方法。附官方文檔圖一張:然后附我代碼一篇:package cn.blue.life;import android.app
3、.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class LifteActivity extends Activity Button bt;protected void onCreate(Bundle savedInstanceState) super.onCre
4、ate(savedInstanceState);this.setContentView(R.layout.main);bt=(Button) this.findViewById(R.id.bt);bt.setText( 第一個(gè) activity);bt.setOnClickListener(new OnClickListener() public void onClick(View v) Intent intent=newIntent(LifteActivity.this,LifteActivitySecond.class);startActivity(intent););Log.i(Myta
5、g,FirstonCreate);protected void onDestroy() Log.i(Mytag,FirstonDestroy);super.onDestroy();protected void onPause() Log.i(Mytag,FirstonPause);super.onPause();protected void onRestart() Log.i(Mytag,FirstonRestart);super.onRestart();protected void onResume() Log.i(Mytag,FirstonResume);super.onResume();
6、protected void onStart() Log.i(Mytag,FirstonStart);super.onStart();protected void onStop() Log.i(Mytag,FirstonStop);super.onStop();/ protected void onRestoreInstanceState(Bundle savedInstanceState) /Log.i(Mytag,First onRestoreInstanceState);/super.onRestoreInstanceState(savedInstanceState);/ / prote
7、cted void onSaveInstanceState(Bundle outState) /Log.i(Mytag,First onSaveInstanceState);/super.onSaveInstanceState(outState);/ onCreate(Bundle savedInstanceState) onStart() onResume() onPause() onStop() onDestroy() onRestart() onCreate(Bundle savedInstanceState)Activity 的初始化, 也就是一個(gè)全新的 Activity 開始時(shí), 調(diào)
8、用該方法onStart()Activity 的啟動(dòng),當(dāng)你能夠看到 Activity 時(shí),啟動(dòng)該方法,onResume()當(dāng) Activity 獲取用戶焦點(diǎn)將要與用戶交互時(shí)調(diào)用此方法,此時(shí) activity 在 activity 棧的棧頂,用戶輸入已經(jīng)可以傳遞給它onPause()當(dāng)系統(tǒng)要啟動(dòng)一個(gè)其他的 activity 時(shí)調(diào)用(其他的 activity 顯示之前) ,這個(gè)方法被用來提交那些持久數(shù)據(jù)的改變、停止動(dòng)畫、和其他占用 CPU 資源的東西。由于下一個(gè)activity 在這個(gè)方法返回之前不會(huì)resumed,所以實(shí)現(xiàn)這個(gè)方法時(shí)代碼執(zhí)行要盡可能快。如果 activity 重新回到前景時(shí)將調(diào)用
9、onResume(), 如果對用戶徹底不可見則會(huì)調(diào)用onStop() 。onStop()當(dāng)另外一個(gè)activity 恢復(fù)并遮蓋住此activity, 導(dǎo)致其對用戶不再可見時(shí)調(diào)用。一個(gè)新activity 啟動(dòng)、其它activity 被切換至前景、當(dāng)前activity 被銷毀時(shí)都會(huì)發(fā)生這種場景。當(dāng) activity 重新回到前景與用戶交互時(shí)調(diào)用 onRestart() , 如果activity 將退出則調(diào)用 onDestory() 。onDestroy()在你的 activity 被銷毀前所調(diào)用的最后一個(gè)方法,當(dāng)進(jìn)程終止時(shí)會(huì)出現(xiàn)這種情況onRestart()當(dāng) activity 從停止?fàn)顟B(tài)重新啟動(dòng)
10、時(shí)調(diào)用。其后調(diào)用onResume()。 3) 、結(jié)合堆棧,詳細(xì)介紹Activity 的生命周期和狀態(tài)切換;下面附上我三個(gè)Activity 的代碼,嘎嘎,package cn.blue.life;import Android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;p
11、ublic class LifteActivitySecond extends Activity Button bt;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);this.setContentView(R.layout.main);bt=(Button) this.findViewById(R.id.bt);bt.setText( 第二個(gè) activity);bt.setOnClickListener(new OnClickListener() public void
12、 onClick(View v) Intent intent=newIntent(LifteActivitySecond.this,LifteActivityDialog.class);startActivity(intent););Log.i(Mytag,Second-onCreate);protected void onDestroy() Log.i(Mytag,Second-onDestroy);super.onDestroy();protected void onPause() Log.i(Mytag,Second-onPause);super.onPause();protected
13、void onRestart() Log.i(Mytag,Second-onRestart);super.onRestart();protected void onResume() Log.i(Mytag,Second-onResume);super.onResume();protected void onStart() Log.i(Mytag,Second-onStart);super.onStart();protected void onStop() Log.i(Mytag,Second-onStop);super.onStop();protected void onRestoreInst
14、anceState(BundlesavedInstanceState) Log.i(Mytag,SecondonRestoreInstanceState);super.onRestoreInstanceState(savedInstanceState);protected void onSaveInstanceState(Bundle outState) Log.i(Mytag,SecondonSaveInstanceState);super.onSaveInstanceState(outState);package cn.blue.life;import android.app.Activi
15、ty;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class LifteActivityDialog extends Activity Button bt;protected void onCreate(Bundle savedInstanceState) super.onCrea
16、te(savedInstanceState);this.setContentView(R.layout.main);bt=(Button) this.findViewById(R.id.bt);bt.setText(一個(gè)小對話框”);bt.setOnClickListener(new OnClickListener() public void onClick(View v) Intent intent=newIntent(LifteActivityDialog.this,LifteActivity.class);startActivity(intent););Log.i(Mytag,Dialo
17、g-onCreate);protected void onDestroy() Log.i(Mytag,Dialog-onDestroy);super.onDestroy();protected void onPause() Log.i(Mytag,Dialog-onPause);super.onPause();protected void onRestart() Log.i(Mytag,Dialog-onRestart);super.onRestart();protected void onResume() Log.i(Mytag,Dialog-onResume);super.onResume
18、();protected void onStart() Log.i(Mytag,Dialog-onStart);super.onStart();protected void onStop() Log.i(Mytag,Dialog-onStop);super.onStop();protected void onRestoreInstanceState(BundlesavedInstanceState) Log.i(Mytag,DialogonRestoreInstanceState);super.onRestoreInstanceState(savedInstanceState);protect
19、ed void onSaveInstanceState(Bundle outState) Log.i(Mytag,DialogonSaveInstanceState);super.onSaveInstanceState(outState);先啟動(dòng)第一個(gè)Activity ,看一下效果我們到看地第一個(gè)Activity 的啟動(dòng),調(diào)用了三個(gè)方法,分別是, onCreate(),onStart(),onResume(),他們分別表示初始化 Activity , 顯示 Activity , 獲取用戶焦點(diǎn),可以進(jìn)行操作。堆棧圖:現(xiàn)在,我們有三種操作方式,分別是:一,點(diǎn)擊后退鍵;二,點(diǎn)擊 home 鍵;三,啟動(dòng)第二個(gè)Activity ;我給大家一一分析這三種情況:第一種情況,后退鍵,將會(huì)把最頂層的 Activity 一從堆棧中移除,的直接銷毀啟動(dòng)到退出,一共執(zhí)行了 6 個(gè)方法,這就是Activity 的生命周期,最簡單,最正常的,沒有任何打斷的生命周期,但是就像人一樣,難免會(huì)生個(gè)病,出個(gè)車禍?zhǔn)裁吹?,所以,下面介紹第二種和第三種;上圖是我點(diǎn)擊了 home 鍵之后的執(zhí)行結(jié)果,我們看到又執(zhí)行了兩個(gè)方法,分別是onPause和onStop,但是并沒有onDestroy ,說明Activity 并沒有被殺掉;而是留在了堆棧之中,處于一種不可見的狀態(tài),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年聊城市中醫(yī)醫(yī)院“水城優(yōu)才”青年人才引進(jìn)備考考試題庫及答案解析
- 愛心會(huì)員活動(dòng)策劃方案(3篇)
- 2026臨沂職業(yè)學(xué)院招聘教師和教輔人員22人備考考試題庫及答案解析
- 三基護(hù)理理論培訓(xùn)參考資料
- 2026年普洱市孟連縣人民檢察院書記員招聘(1人)備考考試試題及答案解析
- 2026四川長虹新網(wǎng)科技有限責(zé)任公司招聘運(yùn)維工程師崗位1人參考考試題庫及答案解析
- 2026年馬鞍山市當(dāng)涂縣數(shù)媒文旅發(fā)展有限責(zé)任公司公開招聘勞務(wù)派遣制工作人員備考考試試題及答案解析
- 2026陜西西安工業(yè)大學(xué)附屬小學(xué)教師招聘考試參考題庫及答案解析
- 2026安徽中煤三建二十九工程處人員招聘3人參考考試題庫及答案解析
- 2026山東臨沂沂河新區(qū)部分事業(yè)單位招聘綜合類崗位工作人員備考考試試題及答案解析
- 塑料倉儲(chǔ)年度工作總結(jié)
- 智慧指揮調(diào)度中心建設(shè)方案
- DB37∕T 4126-2020 漁船安全操作規(guī)范
- 造林技術(shù)規(guī)程樣本
- 北京輔警面試題庫及答案
- 培訓(xùn)學(xué)校老師入股協(xié)議書
- 2025廣西百礦超元發(fā)電有限公司社會(huì)招聘81人筆試參考題庫附答案解析
- 2025年國防科工局機(jī)關(guān)公開遴選公務(wù)員筆試模擬題及答案
- 2025職業(yè)健康培訓(xùn)測試題(+答案)
- 供貨流程管控方案
- 章節(jié)復(fù)習(xí):平行四邊形(5個(gè)知識(shí)點(diǎn)+12大??碱}型)解析版-2024-2025學(xué)年八年級數(shù)學(xué)下冊(北師大版)
評論
0/150
提交評論