Android中的四種活動啟動模式

Activity的四種launchMode

launchMode在多個Activity跳轉(zhuǎn)的過程中扮演著重要的角色,它可以決定是否生成新的Activity實例,是否重用已存在的Activity實例,是否和其他Activity實例公用一個task里。這里簡單介紹一下task的概念,task是一個具有棧結(jié)構(gòu)的對象,一個task可以管理多個Activity,啟動一個應(yīng)用,也就創(chuàng)建一個與之對應(yīng)的task。

Activity一共有以下四種launchMode:

1.standard
2.singleTop
3.singleTask
4.singleInstance
在AndroidManifest.xml配置<activity>的Android:launchMode屬性為以上四種之一即可

一.standard

默認(rèn)啟動模式。每當(dāng)啟動一個新的活動,他就會在返回棧中入棧,并處于棧頂?shù)奈恢?。對于使用該模式的活動,系統(tǒng)不會在乎這個活動是否已經(jīng)在返回棧中存在,每次啟動都會創(chuàng)建該活動的一個新的實例。

standard.png

二.singleTop

在啟動活動時如果發(fā)現(xiàn)返回棧的棧頂已經(jīng)是該活動,則認(rèn)為可以直接使用它,不會再創(chuàng)建新的活動實例。如果已經(jīng)存在,但不是棧頂,則創(chuàng)建

singleTop1.png
singleTop2.png

三.singleTask

每次啟動活動時會系統(tǒng)首先檢查返回棧中是否已經(jīng)存在該活動的實例,如果發(fā)現(xiàn)已經(jīng)存在則直接使用該實例,并把該實例之上的所有活動統(tǒng)統(tǒng)出棧;如果沒有發(fā)現(xiàn)就會創(chuàng)建一個新的實例。

singleTask.png

四.singleInstance

指定為singleInstance模式的活動會啟用一個新的返回棧來管理這個活動。(使用場景例如:實現(xiàn)其他程序可以共享某個活動的實例,有一個單獨的返回棧來管理活動,多個應(yīng)用程序都可以訪問這個活動,其他三個啟動模式都無法實現(xiàn))

singleInstance.png

活動拓展:

常規(guī)的數(shù)據(jù)傳遞

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("param1","111111111111111");
intent.putExtra("param2","222222222222222");
startActivity(intent);

在真正的項目開發(fā)中經(jīng)常會有對接的問題出現(xiàn)。比如SecondActivity并不是由自己開發(fā)的,但要啟動它,而且不清楚傳遞的數(shù)據(jù)。以下方法可以輕松解決問題

SecondActivity.class
public class SecondActivity extends AppCompatActivity {
   .......
    public static void actionStart(Context context, String data1, String data2) {
        Intent intent = new Intent(context, SecondActivity.class);
        intent.putExtra("param1", data1);
        intent.putExtra("param2", data2);
        context.startActivity(intent);
    }
   ......
}
MainActivity.class
bt1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SecondActivity.actionStart(MainActivity.this,"111111111111111","2222222222222222222");
    }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容