Android LaunchMode使用場景

_小馬快跑_發表於2017-12-15

android:launchMode決定了Activity以怎樣的形式被啟動(它可以決定是否生成新的Activity例項,是否重用已存在的Activity例項,是否和其他Activity例項共用一個task棧裡,關於棧可以參考官方文件: https://developer.android.com/guide/components/tasks-and-back-stack.html ),Activity一共有以下四種launchMode: 1 standard 2 singleTop 3 singleTask 4 singleInstance 預設的模式是standard

launchmode.png

###1 Standard android:launchMode="standard" 可以存在多個例項,這是預設的啟動模式,系統總是會在目標棧中建立新的activity例項 ###2 SingleTop android:launchMode="singleTop" 如果這個activity例項已經存在目標棧的棧頂,系統會呼叫這個activity中的onNewIntent()方法,並傳遞intent,而不會建立新的activity例項;如果不存在這個activity例項或者activity例項不在棧頂,則singleTop和Standard作用是一樣的。 ###3 SingleTask android:launchMode="singleTask" 不會存在多個例項,如果棧中不存在activity例項,系統會在新棧的根部建立一個新的activity;如果這個activity例項已經存在,系統會呼叫這個activity的onNewIntent()方法而不會建立新的activity例項。 ###4 SingleInstance android:launchMode="singleInstance" 這種啟動模式比較特殊,因為它會啟用一個新的棧結構,將Acitvity放置於這個新的棧結構中,並保證不再有其他Activity例項進入,除此之外,SingleInstance模式和SingleTask模式是一樣的。

相關文章