日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Activity生命周期總結(jié)

系統(tǒng) 2505 0

Android中用于顯示的容器是Activity,一個Activity對應(yīng)一個顯示頁面。

?

?

  • Activity生命7方法

Activity對象運(yùn)行與它自己的7個方法密切相關(guān),從對象的創(chuàng)建到銷毀,這7個方法在Activity不同階段運(yùn)行,具體的方法介紹如下表格所示:

?

Method

Description

Killable

Next

onCreate

當(dāng)啟動新的 Activity 的時候被調(diào)用

No

onStart()

onStart

當(dāng) Activity 對用戶即將可見時調(diào)用

No

onResume() or onStop()

onRestart

重新啟動 Activity 時調(diào)用 (此方法是重啟留在緩存中的 Activity

No

onStart()

onResume

當(dāng) Activity 界面可與用戶交互時調(diào)用

No

onPause()

onPause

當(dāng)系統(tǒng)要啟動一個其他的 activity 時調(diào)用,用于保存當(dāng)前數(shù)據(jù)

Yes

onResume() or onStop()

onStop

Activity 已經(jīng)不可見時調(diào)用

Yes

onRestart() or
onDestroy()

onDestroy

當(dāng) Activity finish 或手機(jī)內(nèi)存不足被銷毀的時候調(diào)用

Yes

nothing

?

?

?

  • Activity LifeCycle

Google官方提供了Activity LifeCycle的運(yùn)行圖,個人覺得官方提供的圖非常簡潔明了地介紹了Activity的運(yùn)行周期:


Activity生命周期總結(jié)

如上圖所示,當(dāng)啟動Activity1時, 首先調(diào)用 onCreate 方法初始化 Activity 的內(nèi)容,當(dāng) Activity 顯示出來的時候調(diào)用 onStar 方法(此時 Activity 只能看不能點(diǎn)擊使用),當(dāng) Activity 可以被點(diǎn)擊時,則調(diào)用 onResume 方法;

如果新一個Activity2完全覆蓋原Activity1, 首先會讓 Activity1 執(zhí)行 onPause 方法暫存 Activity1 的數(shù)據(jù),然后依次執(zhí)行 onCreate 、 onStart onResume 方法啟動 Activity2, 最后因?yàn)? Activity1 會被 Activity2 完全覆蓋,所以會執(zhí)行 Activity1 onStop 方法;

另一種情況,如果新Activity2未完全覆蓋Activity1(可能只是一個彈出層),則運(yùn)行流程與上面說的執(zhí)行流程相同,只是不會執(zhí)行Activity1的onStop方法;

如果點(diǎn)擊手機(jī)上的“返回”按鈕,當(dāng)前Activity對象會被銷毀,此時就會執(zhí)行onDestory方法。

?

?

  • Android Task

Android Task 是一個 Activity 棧,保存的是所有正運(yùn)行的 application Activity 數(shù)據(jù), Task 中的 Activity 可以分屬于不同的 application, 一個 Activity 棧也可能是由一個或多個 Task 組成, Task 數(shù)據(jù)僅僅是臨時保存,若手機(jī)內(nèi)存不足或長時間未使用該 application , Android 會自動銷毀 Task 部分 Activity 數(shù)據(jù)。

?

  • onSaveInstanceState保存數(shù)據(jù)
前面提到:Activity處于onPause、onStop和onDestory狀態(tài)時,如果手機(jī)內(nèi)存資源緊缺就會銷毀Activity,這樣導(dǎo)致當(dāng)前Activity填寫的數(shù)據(jù)都化為烏有。Activity含有onSaveInstanceState方法,該方法的參數(shù)Bundle可以保存數(shù)據(jù),即使當(dāng)前Activity被銷毀,Bundle也是存在的。這樣Activity再次啟動后onCreate方法的參數(shù)Bundle對象其實(shí)就是onSaveInstanceState的Bundle對象,所以可以在onCreate方法中再取出Bundle對象中的數(shù)據(jù)。
       @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        if(savedInstanceState!=null && savedInstanceState.containsKey(ET_KEY)){
        	EditText et = (EditText)findViewById(R.id.et);
        	et.setText(savedInstanceState.getString(ET_KEY));
        }
    }
    
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		EditText et = (EditText)findViewById(R.id.et);
		outState.putString(ET_KEY, et.getText().toString());
	}
    
?

?

我的百度文庫有關(guān)于Android Activity生命周期的ppt,免費(fèi)下載,希望對大家有所幫助:

http://wenku.baidu.com/view/db19524ce518964bcf847cf9.html

?

附Activity生命周期例子,版本2.1

Activity生命周期總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 张北县| 乡宁县| 余姚市| 土默特左旗| 象山县| 内江市| 鄯善县| 阜阳市| 精河县| 中阳县| 荆门市| 炎陵县| 贡嘎县| 正镶白旗| 新昌县| 邳州市| 陕西省| 兰溪市| 石狮市| 报价| 当雄县| 郧西县| 施甸县| 方山县| 武强县| 绵竹市| 会泽县| 凉山| 乌海市| 桐乡市| 天祝| 同江市| 虎林市| 改则县| 夏津县| 旬阳县| 江都市| 菏泽市| 海口市| 洪湖市| 广安市|