Android Studio 筆記(二)------知識點

一、activity的生命週期

onCreate(),新建一個活動時調用該方法,並把當前活動放入返回棧的棧頂。

onStart(),活動從不可見到可見,出現頁面。

onResume(),活動準備好進行交互了。

onPause(),表示當前不能進行交互,系統準備去啓動活着恢復另一個活動時,總是先pause當前活動,再去看其他命令。(例如果出現dialog請求,也就是當前頁面前懸浮一個小頁面的對話框請求,當前頁面暫停,不能進行交互,恢復後要回到onResume()方法)

onStop(),當前活動跳轉別的活動,當前活動stop,恢復後回到onRestart()方法,再onStart向後推進。

onDestroy(),退出本活動時,活動銷燬,出棧。

例:

MainActivity、NormalActivity、DialogActivity(對話型活動)

<activity
    android:name=".P2_DialogActivity"
    android:theme="@style/Theme.AppCompat.Dialog" />

1.點開主活動MainActivity

MainActivity:onCreate();onStart();onResume();

2.MainActivity跳轉NormalActivity

MainActivity:onPause();onStop();

NormalActivity:onCreate();onStart();onResume();

3.NormalActivity返回MainActivity

NormalActivity:onPause();onStop();onDestroy();

MainActivity:onRestart();onStart();onResume();//back不用新建,沿着返回棧返回即可

4.MainActivity對話DialogActivity

MainActivity:onPause();

DialogActivity:onCreate();onStart();onResume();

5.DialogActivity退回MainActivity

DialogActivity:onPause();onStop();onDestroy();

MainActivity:onResume();

6.退出MainActivity

MainActivity:onPause();onStop();onDestroy();

 

二、activity活動啓動模式

standard、singleTop、singleTask、singleInstance

屬性在AndroidManifest.xml裏修改

<activity
    android:name=".P2_LaunchTypeActivity"
    android:launchMode="singleTask"
    ></activity>

1.standard:

默認啓動方式,離開本活動創建新活動時本活動入棧頂,新建時不會管棧裏有沒有本活動,都會新建活動。

例:

Button button_standard=(Button)findViewById(R.id.button_standard);
button_standard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent standrad=new Intent(P2_LaunchTypeActivity.this,P2_LaunchTypeActivity.class);<!--訪問當前活動-->
        startActivity(standrad);
    }
});

點擊按鈕三四下,還是一樣的界面,還是這個活動,但要返回三四下才能徹底退出此活動,說明這裏已經不是當時的頁面了,而是新建了兩三個界面。

注:這裏與back跳到另一個會話再返回本活動不一樣,intent與back機制不一樣,back是直接沿用返回棧,棧頂活動出棧,下一個活動變當前活動,intent根據活動啓動模式而看是新建還是去找棧裏的某個活動。

2.singleTop:

如果返回棧的棧頂已經是該活動,則可以直接使用它,不用新建。

例:activity1請求activity1,不會新建,因爲當前activity1已在棧頂;但如果activity1請求activity2,activity2再請求activity1,因爲activity2在棧頂,所以會新建activity1。

3.singleTask:(最常用)

只要棧裏任意位置有該活動,則直接使用,並且把它之上的所有其他活動都移出棧外。

例:activity1請求activity2,activity2再請求activity1,回到已有的activity1界面,activity2被destroyed。

4.singleInstance:

可以給該活動單獨有一個返回棧,可以多個程序共享該返回棧,共同管理該活動。

不如此的話,本來是每個程序都有自己的返回棧,如果啓動該活動,每個都要新建實例。

可通過getTaskId()來看所在棧是否爲同一個。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章