當前位置:成語大全網 - 英語詞典 - android 怎麽設置activity的啟動模式

android 怎麽設置activity的啟動模式

android 怎麽獲取壹個activity啟動模式

在Android中每個界面都是壹個Activity,切換界面操作其實是多個不同Activity之間的實例化操作。在Android中Activity的啟動模式決定了Activity的啟動運行方式。

Android總Activity的啟動模式分為四種:

Activity啟動模式設置:

<activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四種啟動模式:

1. standard

模式啟動模式,每次激活Activity時都會創建Activity,並放入任務棧中。

2. singleTop

如果在任務的棧頂正好存在該Activity的實例, 就重用該實例,否者就會創建新的實例並放入棧頂(即使棧中已經存在該Activity實例,只要不在棧頂,都會創建實例)。

3. singleTask

如果在棧中已經有該Activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移除棧。如果棧中不存在該實例,將會創建新的實例放入棧中。

4. singleInstance

在壹個新棧中創建該Activity實例,並讓多個應用***享改棧中的該Activity實例。壹旦改模式的Activity的實例存在於某個棧中,任何應用再激活改Activity時都會重用該棧中的實例,其效果相當於多個應用程序***享壹個應用,不管誰激活該Activity都會進入同壹個應用中。

其中standard是系統默認的啟動模式。

下面通過實例來演示standard的運行機制:

1 private TextView text_show;

2 private Button btn_mode;

3

4 @Override

5 public void onCreate(Bundle savedInstanceState) {

6 super.onCreate(savedInstanceState);

7 setContentView(R.layout.activity_main);

8

9 text_show = (TextView) this.findViewById(R.id.text_show);

10

11 text_show.setText(this.toString());

12

13 btn_mode = (Button) this.findViewById(R.id.btn_mode);

14

15 }

16

按鈕單擊事件

17 public void LaunchStandard(View v){

18 startActivity(new Intent(this,MainActivity.class));

19

20 text_show.setText(this.toString());

21 }

如何設置Activity的啟動模式 Activity的四種啟動模式:standard:這是默認模式,每次激活Activity時都會創建Activity實例,並放入任務棧中。 singleTop: 如果在任務的棧頂正好存在該Activity的實例,就重用該實例( 會調用實例的 onNewIntent() ),否則就會創建新的實例並放... android 主activity用什麽啟動模式

在android裏,有4種activity的啟動模式,分別為:

“standard” (默認)

“singleTop”

“singleTask”

“singleInstance”

1. 如何決定所屬task

“standard”和”singleTop”的activity的目標task,和收到的Intent的發送者在同壹個task內,除非intent包括參數FLAG_ACTIVITY_NEW_TASK。

如果提供了FLAG_ACTIVITY_NEW_TASK參數,會啟動到別的task裏。

2. 是否允許多個實例

“standard”和”singleTop”可以被實例化多次,並且存在於不同的task中,且壹個task可以包括壹個activity的多個實例;

“singleTask”和”singleInstance”則限制只生成壹個實例,並且是task的根元素。

singleTop要求如果創建intent的時候棧頂已經有要創建 的Activity的實例,則將intent發送給該實例,而不發送給新的實例。

3. 是否允許其它activity存在於本task內

“singleInstance”獨占壹個task,其它activity不能存在那個task裏;如果它啟動了壹個新的activity,不管新的activity的launch mode 如何,新的activity都將會到別的task裏運行(如同加了FLAG_ACTIVITY_NEW_TASK參數)。

而另外三種模式,則可以和其它activity***存。

4. 是否每次都生成新實例

“standard”對於沒壹個啟動Intent都會生成壹個activity的新實例;

“singleTop”的activity如果在task的棧頂的話,則不生成新的該activity的實例,直接使用棧頂的實例,否則,生成該activity的實例。

比如現在task棧元素為A-B-C-D(D在棧頂),這時候給D發壹個啟動intent,如果D是 “standard”的,則生成D的壹個新實例,棧變為A-B-C-D-D。

如果D是singleTop的話,則不會生產D的新實例,棧狀態仍為A-B-C-D

如果這時候給B發Intent的話,不管B的launchmode是”standard” 還是 “singleTop” ,都會生成B的新實例,棧狀態變為A-B-C-D-B。

“singleInstance”是其所在棧的唯壹activity,它會每次都被重用。

“singleTask”如果在棧頂,則接受intent,否則,該intent會被丟棄,但是該task仍會回到前臺。

當已經存在的activity實例處理新的intent時候,會調用onNewIntent()方法

如果收到intent生成壹個activity實例,那麽用戶可以通過back鍵回到上壹個狀態;如果是已經存在的壹個activity來處理這個intent的話,用戶不能通過按back鍵返回到這之前的狀態。

總結如下:

standard 每次都會新建,每個Task都可以有,且每個Task都可以有多個實例(每個Task都可以有,且可以有多個)

singleTop 當前實例如果在棧頂,就不新建實例,調用其OnNewIntent。 如不在棧頂,則新建實例 (每個Task都可以有,且可以有多個,在棧頂時可復用)

singleTask 新建壹個Task,如果已經有其他的Task並且包含該實例,那就直接調用那個Task的實例。(只有壹個Task中會有)

singleInstance 新建壹個Task,且在該Task中只有它的唯壹壹個實例。 (只有壹個Task會有,且該Task中只有它)

FLAG_ACTIVITY_NEW_TASK 類似singleTask

FLAG_ACTIVITY_SINGLE_TOP 類似singleTop

FLAG_ACTIVITY_CLEAR_TOP 無對應

Android開發,activity的默認啟動模式為標準啟動模式,什麽時候會用到其他的啟動模式?

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

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

講解啟動模式之前,有必要先了解壹下“任務棧”的概念;

壹 :

standard 模式:這個就沒有什麽好說的了,Android默認Activity啟動的模式 就是 standard,如果有3個 Activity,Act1,Act2,Act3, 如果從Act1 啟動到Act2 ,在啟動到Act3,那麽Android 的任務棧(task stack)分別為 Act1、Act2、Act3,Act3 在棧頂,如果此時按手機返回鍵,則需要返回3次才能返回到桌面(假設是從桌面啟動的demo),任務棧分銷毀掉 Act3,Act2,最後Act1 。

二 :singleTop模式:

實驗效果:

singleTop模式:該啟動模式和standard模式相差不多,任務棧分配也很相似,如:現有 act1,act 2,在act2 清單文件中配置 android:launchMode="singleTop" ,其他都是默認standard 模式, 若從桌面啟動該實驗demo,從act 1,到act2 ,那麽任務棧則分配為,act1,act2,此時該任務棧和 standard 模式任務棧分配則完全相同,接下來則說明不同的地方,如果在act2 界面中 啟動 到act1, 此時的 任務棧 情況則為 act1,act2,act1,在由act1 啟動到act2,在啟動到act2,進行多次啟動,(在act2界面)任務棧的情況則為,act1,act2,act1,act2,棧頂的act2 則不會重新創建,則會復用act2 該 Activit, 依次類推。

理論知識:

singleTop,如果任務棧的棧頂元素是要被激活的組件,不會創建新的Activity放在任務棧,而是會復用棧頂的Activity。 如果發現棧頂的元素不是要激活的Activity,就會創建新的Activity 放置到任務棧裏面

singleTop模式應用場景 :

App程序中(或瀏覽器中)保存的書簽,假如用戶看到壹個界面保存自己喜歡的標簽,假如要保存10個,這個時候用戶在返回鍵的時候,則會返回10次才能返回到App應用中, Android下singleTop 則解決該問題。

三 singleTask 模式 :

實驗效果 相差不大,實驗內容就不多說了,自己可以寫個小demo,兩個Activity,每個Activiy 有兩個button,可以相互啟動 打日誌去動手查看,會理解更加深刻,可以參照著 SingleTop模式去實驗,以下只是講解下 和SingleTop的區別:

區別如下:(理論知識)

SingleTask 操作模式,壹般和singleTop操作模式類似,如果他發現任務棧裏面已經有了要啟動的這個Activity,他會清空這個Activity所在的任務棧上面的所有Activiy,然後直接復用這個已經存在的Activity 。

應用場景:

如果壹個App中,有壹個功能需要加載網頁內容 ,打開壹個 browserActiviy現在網頁內容,則內存開銷非常大,首先要初始化webkit /c++ 嵌入式瀏覽器內核broweractivity 配置了singleTask,空間換時間,使用該模式可以節省內存開銷。

四 :singleinstance 模式 :

直接理論知識吧”:

singleInstance操作模式會新開啟壹個任務棧,跟其他普通Activity不是 同壹個任務棧,比較牛,他的模式流程是 首先要新開啟壹個新的任務棧把要激活的Activity放置到新的 任務棧裏,這個任務棧裏面只有且 只有壹個實例,也比較極端吧。說比較極端也跟他的應用場景有關系。

應用場景 :

App各種詞典,向有道詞典,什麽金山詞典,說極端是因為不想被放置到同壹個任務棧裏面,它是全局的系統程序應用,達到節省內存的使用目的。

win7 系統 怎麽設置uefi啟動模式

存有ghost版win7系統iso鏡像文件的u啟動uefi u盤啟動盤插在電腦u *** 接口上,然後重啟電腦,在出現開機畫面時用壹鍵u盤啟動快捷鍵的方法進入到啟動項選擇窗口,然後將光標移至UEFI:開頭的項(註意:壹定要選擇該項),按回車鍵執行等待進入到u啟動win pe系統,u啟動裝機工具會自動開啟,並加載到u啟動uefi u盤啟動盤中準備的win7系統安裝程序,點擊選擇c盤為系統安裝盤,再點擊“確定”按鈕繼續

隨即會彈出壹個詢問是否執行該操作的提示窗口,點擊“確定”按鈕執行操作

然後耐心等待win7系統釋放完成並自動重啟電腦即可

電腦重啟後會完成系統後續程序安裝應用,直到進入win7系統桌面即可

android開發 activity啟動模式中singleTop的疑問

樓主的這壹段理論似乎有點不太準確 “在D完成操作以後,我啟動了系統內置的瀏覽器E,根據sdk的說法,瀏覽器E被放進了壹個新任務。那麽現在有兩個任務” 妳憑什麽確定瀏覽器E被放進了壹個新的Task呢? 在啟動瀏覽器E的Intent裏設置了flag? intentandroid開發 activity啟動模式中singleTop的疑問

android-Android activity 的啟動模式.新人提問,大俠在哪

Activity的四種啟動模式:standard:這是默認模式,每次激活Activity時都會創建Activity實例,並放入任務棧中。

singleTop: 如果在任務的棧頂正好存在該Activity的實例,就重用該實例( 會調用實例的 onNewIntent() ),否則就會創建新的實例並放入棧頂,即使棧中已經存在該Activity的實例,只要不在棧頂,都會創建新的實例。

singleTask:如果在棧中已經有該Activity的實例,就重用該實例(會調用實例的 onNewIntent() )。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移出棧。如果棧中不存在該實例,將會創建新的實例放入棧中。

singleInstance:在壹個新棧中創建該Activity的實例,並讓多個應用***享該棧中的該Activity實例。壹旦該模式的Activity實例已經存在於某個棧中,任何應用再激活該Activity時都會重用該棧中的實例( 會調用實例的 onNewIntent() )。其效果相當於多個應用***享壹個應用,不管誰激活該 Activity 都會進入同壹個應用中。

位置在 AndroidManifest.xml 文件中 Activity 元素的 android:launchMode 屬性。

不知道妳要問什麽,為妳解答

activity的啟動模式有哪些

Activity的四種啟動模式:standard:這是默認模式,每次激活Activity時都會創建Activity實例,並放入任務棧中。

singleTop: 如果在任務的棧頂正好存在該Activity的實例,就重用該實例( 會調用實例的 onNewIntent() ),否則就會創建新的實例並放入棧頂,即使棧中已經存在該Activity的實例,只要不在棧頂,都會創建新的實例。

singleTask:如果在棧中已經有該Activity的實例,就重用該實例(會調用實例的 onNewIntent() )。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移出棧。如果棧中不存在該實例,將會創建新的實例放入棧中。

singleInstance:在壹個新棧中創建該Activity的實例,並讓多個應用***享該棧中的該Activity實例。壹旦該模式的Activity實例已經存在於某個棧中,任何應用再激活該Activity時都會重用該棧中的實例( 會調用實例的 onNewIntent() )。其效果相當於多個應用***享壹個應用,不管誰激活該 Activity 都會進入同壹個應用中。

位置在 AndroidManifest.xml 文件中 Activity 元素的 android:launchMode 屬性。