Android入門:Activity四種啓動模式

1、啓動模式介紹html

  啓動模式簡單地說就是Activity啓動時的策略,在AndroidManifest.xml中的標籤的android:launchMode屬性設置;linux

  啓動模式有4種,分別爲standard、singleTop、singleTask、singleInstance;android

講解啓動模式以前,有必要先講解一下「任務棧」的概念;ide

  任務棧函數

  每一個應用都有一個任務棧,是用來存放Activity的,功能相似於函數調用的棧,前後順序表明了Activity的出現順序;好比Activity1-->Activity2-->Activity3,則任務棧爲:spa

2、啓動模式code

(1)standard:每次激活Activity時(startActivity),都建立Activity實例,並放入任務棧;xml

(2)singleTop:若是某個Activity本身激活本身,即任務棧棧頂就是該Activity,則不須要建立,其他狀況都要建立Activity實例;htm

(3)singleTask:若是要激活的那個Activity在任務棧中存在該實例,則不須要建立,只須要把此Activity放入棧頂,並把該Activity以上的Activity實例都pop;blog

(4)singleInstance:只有一個實例,而且這個實例獨立運行在一個task中,這個task只有這個實例,不容許有別的Activity存在若是應用1的任務棧中建立了MainActivity實例,若是應用2也要激活MainActivity,則不須要建立,兩應用共享該Activity實例;

 

 

SingTask的應用:

       能夠用來退出整個應用。

       將主Activity設爲SingTask模式,而後在要退出的Activity中轉到主Activity,而後重寫主Activity的onNewIntent函數,並在函數中加上一句finish。

 

 

附:

退出單個Activity方法:

      調用finish

  殺死該進程:killprocess(Process.mId)

      終止正在運行的虛擬機:system.exit()

 

退出整個應用:

  製造拋異常致使整個程序退出

  將全部的activity放入到一個list中,而後在須要退出的時候,將全部的activity,finish掉

  經過廣播來完成退出功能

     經過廣播來完成退出功能,具體實現過程是這樣的:在每一個Activity建立時(onCreate時)給Activity註冊一個廣播接收器,當退出時發送該廣播便可。大概的代碼以下:

複製代碼

@Overrideprotected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);

       IntentFilter filter = new IntentFilter();

       filter.addAction("finish");

       registerReceiver(mFinishReceiver, filter);

       ……

}private BroadcastReceiver mFinishReceiver = new BroadcastReceiver() {

    @Overridepublic void onReceive(Context context, Intent intent) {           if("finish".equals(intent.getAction())) {

              Log.e("#########", "I am " + getLocalClassName()                     + ",now finishing myself...");

              finish();

       }

    }

};

複製代碼

  把上面的代碼寫在一個基類裏面,這樣,在須要退出的地方調用close,發送廣播,每一個Activity接收到廣播後,就會將本身finish掉

相關文章
相關標籤/搜索