欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android入門之Activity四種啟動模式(standard、singleTop、singleTask、singleInstance)

 更新時間:2015年12月22日 15:17:43   投稿:mrr  
當(dāng)應(yīng)用運行起來后就會開啟一條線程,線程中會運行一個任務(wù)棧,當(dāng)Activity實例創(chuàng)建后就會放入任務(wù)棧中。Activity啟動模式的設(shè)置在AndroidManifest.xml文件中,通過配置Activity的屬性android:launchMode=""設(shè)置

當(dāng)應(yīng)用運行起來后就會開啟一條線程,線程中會運行一個任務(wù)棧,當(dāng)Activity實例創(chuàng)建后就會放入任務(wù)棧中。Activity啟動模式的設(shè)置在AndroidManifest.xml文件中,通過配置Activity的屬性android:launchMode=""設(shè)置。

一、啟動模式介紹

  啟動模式簡單地說就是Activity啟動時的策略,在AndroidManifest.xml中的標(biāo)簽的android:launchMode屬性設(shè)置;

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

講解啟動模式之前,有必要先講解一下“任務(wù)?!钡母拍?

  任務(wù)棧

  每個應(yīng)用都有一個任務(wù)棧,是用來存放Activity的,功能類似于函數(shù)調(diào)用的棧,先后順序代表了Activity的出現(xiàn)順序;比如Activity1-->Activity2-->Activity3,則任務(wù)棧為:

二、啟動模式

(1)standard模式(默認(rèn)):每次激活A(yù)ctivity時(startActivity),都創(chuàng)建Activity實例,并放入任務(wù)棧;

我們平時直接創(chuàng)建的Activity都是這種模式的Activity,這種模式的Activity的特點是:只要你創(chuàng)建了Activity實例,一旦激活該Activity,則會向任務(wù)棧中加入新創(chuàng)建的實例,退出Activity則會在任務(wù)棧中銷毀該實例。

(2)singleTop模式:如果某個Activity自己激活自己,即任務(wù)棧棧頂就是該Activity,則不需要創(chuàng)建,其余情況都要創(chuàng)建Activity實例;


(3)singleTask模式:如果要激活的那個Activity在任務(wù)棧中存在該實例,則不需要創(chuàng)建,只需要把此Activity放入棧頂,并把該Activity以上的Activity實例都pop;

如果任務(wù)棧中存在該模式的Activity實例,則把棧中該實例以上的Activity實例全部移除,調(diào)用該實例的newInstance()方法重用該Activity,使該實例處於棧頂位置,否則就重新創(chuàng)建一個新的Activity實例。

(4)singleInstance模式:如果應(yīng)用1的任務(wù)棧中創(chuàng)建了MainActivity實例,如果應(yīng)用2也要激活MainActivity,則不需要創(chuàng)建,兩應(yīng)用共享該Activity實例;

當(dāng)該模式Activity實例在任務(wù)棧中創(chuàng)建后,只要該實例還在任務(wù)棧中,即只要激活的是該類型的Activity,都會通過調(diào)用實例的newInstance()方法重用該Activity,此時使用的都是同一個Activity實例,它都會處于任務(wù)棧的棧頂。此模式一般用于加載較慢的,比較耗性能且不需要每次都重新創(chuàng)建的Activity。

SingTask的應(yīng)用:

可以用來退出整個應(yīng)用。

將主Activity設(shè)為SingTask模式,然后在要退出的Activity中轉(zhuǎn)到主Activity,然后重寫主Activity的onNewIntent函數(shù),并在函數(shù)中加上一句finish。

附:

退出單個Activity方法:

調(diào)用finish

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

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

退出整個應(yīng)用:

  制造拋異常導(dǎo)致整個程序退出

  將所有的activity放入到一個list中,然后在需要退出的時候,將所有的activity,finish掉

  通過廣播來完成退出功能

通過廣播來完成退出功能,具體實現(xiàn)過程是這樣的:在每個Activity創(chuàng)建時(onCreate時)給Activity注冊一個廣播接收器,當(dāng)退出時發(fā)送該廣播即可。大概的代碼如下:

@Override
protected 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();
}
}
}; 

  把上面的代碼寫在一個基類里面,這樣,在需要退出的地方調(diào)用close,發(fā)送廣播,每個Activity接收到廣播后,就會將自己finish掉。

以上所述是小編給大家分享的Android入門之Activity四種啟動模式(standard、singleTop、singleTask、singleInstance),希望大家喜歡。

相關(guān)文章

最新評論