[android] activity的四種載入模式
阿新 • • 發佈:2019-01-26
<activity
android:name="com.example.activitymodetest.SecondActivity"
android:launchMode="singleTask" >
</activity>
standard
標準模式,一呼叫startActivity()方法就會產生一個新的例項。
singleTop
如果已經有一個例項位於Activity棧的頂部時,就不產生新的例項,而只是呼叫Activity中的newInstance()方法。如果不位於棧頂,會產生一個新的例項。
singleTask
會在一個新的task中產生這個例項,以後每次呼叫都會使用這個,不會去產生新的例項了。
注意:跳轉到這個Activity之後,之前的所有activity將被移除
singleInstance
跳轉到一個新的activity棧,並且這個棧只有這一個activity。
使用場景:例如某個應用可以使用微信賬號來作為賬號,則在登陸時需要到微信應用中去授權驗證,需要跳轉的微信activity
還有什麼會影響到activity的launchMode
Intent.setFlag()中也可以設定Flag型別Activity註冊資訊中的taskAffinity、allowTaskReparenting、clearTaskOnLaunch、alwaysRetainTaskState、finishOnTaskLaunch等資訊
如何檢視當前的activity task棧id
activity提供了這個方法getTaskId()
一個app啟動另一個app的activity,當前app activity task棧是怎麼樣的
這個涉及到被啟動的app的activity的launchMode。另外Intent的setFlag也會影響到activity的task
另外還有一篇大神的文章:http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html