1. 程式人生 > >[android] activity的四種載入模式

[android] activity的四種載入模式

<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