74.Android之四種啟動模式

來源:互聯網
上載者:User

標籤:

轉載:http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html

一、啟動模式介紹

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

  啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance;

講解啟動模式之前,有必要先講解一下“任務棧”的概念;

  任務棧

  每個應用都有一個任務棧,是用來存放Activity的,功能類似於函數調用的棧,先後順序代表了Activity的出現順序;比如Activity1-->Activity2-->Activity3,則任務棧為:

二、啟動模式

(1)standard:每次啟用Activity時(startActivity),都建立Activity執行個體,並放入任務棧;

(2)singleTop:如果某個Activity自己啟用自己,即任務棧棧頂就是該Activity,則不需要建立,其餘情況都要建立Activity執行個體;

(3)singleTask:如果要啟用的那個Activity在任務棧中存在該執行個體,則不需要建立,只需要把此Activity放入棧頂,並把該Activity以上的Activity執行個體都pop;

(4)singleInstance:如果應用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() {    @Override    public void onReceive(Context context, Intent intent) {           if("finish".equals(intent.getAction())) {              Log.e("#########", "I am " + getLocalClassName()                     + ",now finishing myself...");              finish();       }    }};

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

74.Android之四種啟動模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.