版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Android 之 Activity 生命周期史無前例的詳細介紹, 新手 必必必看。Android 的 Activity 生命周期是一個非常重要的知識點, 但是 由于 Activity 的狀態(tài)眾多,而且狀態(tài)直接的切換類型也十分 的眾多,導(dǎo)致Activity 的方法很多,這就給新手學(xué)習并理解Activity 造成了一定的難度,如果你能認真讀完我這一篇博 文,那么我相信你一定能對Activity 的理解達到一個嶄新的高度,ok ,下面是我對Activity 的理解。要想透徹的理解 Activity ,那么必須了解一個計算機的名詞,“堆棧” , 因為 Activity 的狀態(tài)切換方式十分類似于數(shù)據(jù)結(jié)
2、構(gòu)中的堆棧。1、首先介紹什么是堆棧,及其特點。2、介紹Activity 的七個狀態(tài)方法。結(jié)合堆棧, 詳解 Activity 狀態(tài)直接的切換和各個方法的調(diào)用。、下面我來介紹一下什么是“堆?!?。堆棧 可以簡單的理解成一個的 “竹筒” ,只不過種竹筒是一端封閉另一端開啟的,如圖所示:透過這個竹筒我們不難發(fā)現(xiàn),因為堆棧的一端是封閉的,所以要想往里面放東西,必須從一端放,取的時候也只能從一端取,就是這 堆棧最重要的特點, “后進先出” 。、下面我要介紹的是Activity 的七個狀態(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( 第一個 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 的初始化, 也就是一個全新的 Activity 開始時, 調(diào)
8、用該方法onStart()Activity 的啟動,當你能夠看到 Activity 時,啟動該方法,onResume()當 Activity 獲取用戶焦點將要與用戶交互時調(diào)用此方法,此時 activity 在 activity 棧的棧頂,用戶輸入已經(jīng)可以傳遞給它onPause()當系統(tǒng)要啟動一個其他的 activity 時調(diào)用(其他的 activity 顯示之前) ,這個方法被用來提交那些持久數(shù)據(jù)的改變、停止動畫、和其他占用 CPU 資源的東西。由于下一個activity 在這個方法返回之前不會resumed,所以實現(xiàn)這個方法時代碼執(zhí)行要盡可能快。如果 activity 重新回到前景時將調(diào)用
9、onResume(), 如果對用戶徹底不可見則會調(diào)用onStop() 。onStop()當另外一個activity 恢復(fù)并遮蓋住此activity, 導(dǎo)致其對用戶不再可見時調(diào)用。一個新activity 啟動、其它activity 被切換至前景、當前activity 被銷毀時都會發(fā)生這種場景。當 activity 重新回到前景與用戶交互時調(diào)用 onRestart() , 如果activity 將退出則調(diào)用 onDestory() 。onDestroy()在你的 activity 被銷毀前所調(diào)用的最后一個方法,當進程終止時會出現(xiàn)這種情況onRestart()當 activity 從停止狀態(tài)重新啟動
10、時調(diào)用。其后調(diào)用onResume()。 3) 、結(jié)合堆棧,詳細介紹Activity 的生命周期和狀態(tài)切換;下面附上我三個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( 第二個 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(一個小對話框”);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);先啟動第一個Activity ,看一下效果我們到看地第一個Activity 的啟動,調(diào)用了三個方法,分別是, onCreate(),onStart(),onResume(),他們分別表示初始化 Activity , 顯示 Activity , 獲取用戶焦點,可以進行操作。堆棧圖:現(xiàn)在,我們有三種操作方式,分別是:一,點擊后退鍵;二,點擊 home 鍵;三,啟動第二個Activity ;我給大家一一分析這三種情況:第一種情況,后退鍵,將會把最頂層的 Activity 一從堆棧中移除,的直接銷毀啟動到退出,一共執(zhí)行了 6 個方法,這就是Activity 的生命周期,最簡單,最正常的,沒有任何打斷的生命周期,但是就像人一樣,難免會生個病,出個車禍什么的,所以,下面介紹第二種和第三種;上圖是我點擊了 home 鍵之后的執(zhí)行結(jié)果,我們看到又執(zhí)行了兩個方法,分別是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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民法典知識考試試題及答案
- 軟件開發(fā)二手房買賣合同樣本
- 城市排水招投標廉潔合同模板
- 墻繪裝飾施工合同
- 新能源項目招投標合同風險防范
- 房屋戶外照明安裝合同
- 教育培訓(xùn)機構(gòu)裝修施工合同
- 國際實驗室地暖系統(tǒng)安裝工程合同
- 政府辦公樓石材裝飾協(xié)議
- 勞動合同簽訂與解除規(guī)范
- 血液透析室對血透過程中患者低血壓原因分析品管圈魚骨圖柏拉圖
- 采購部門工作計劃書
- 翻譯策略完整
- GB/T 9711-2023石油天然氣工業(yè)管線輸送系統(tǒng)用鋼管
- 2023-2024學(xué)年福建省廈門市思明區(qū)松柏片區(qū)人教版一年級上冊期中測試數(shù)學(xué)試卷(解析版)
- 余華讀書分享+名著導(dǎo)讀《我們生活在巨大的差距里》
- 阿里云數(shù)據(jù)備份方案
- 商顯市場調(diào)研報告
- 公司網(wǎng)絡(luò)安全培訓(xùn)課件
- 質(zhì)量體系調(diào)查表-2
- 和田玉專業(yè)知識
評論
0/150
提交評論