當前位置:首頁 » 安卓系統 » androidlaunchmode

androidlaunchmode

發布時間: 2022-07-06 23:16:09

A. 怎樣讓Android應用程序只運行一個實例

這個倒是沒聽說過
給你列出Activity的四種啟動模式吧:
1.
standard
模式啟動模式,每次激活Activity時都會創建Activity,並放入任務棧中。
2.
singleTop
如果在任務的棧頂正好存在該Activity的實例,
就重用該實例,否者就會創建新的實例並放入棧頂(即使棧中已經存在該Activity實例,只要不在棧頂,都會創建實例)。
3.
singleTask
如果在棧中已經有該Activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移除棧。如果棧中不存在該實例,將會創建新的實例放入棧中。
4.
singleInstance
在一個新棧中創建該Activity實例,並讓多個應用共享改棧中的該Activity實例。一旦改模式的Activity的實例存在於某個棧中,任何應用再激活改Activity時都會重用該棧中的實例,其效果相當於多個應用程序共享一個應用,不管誰激活該Activity都會進入同一個應用中。
另外:
設置Activity的啟動模式,要在AndroidManifest.xml里對應的
標簽設置android:launchMode屬性

B. android launchmode寫在哪

在AndroidManifest.xml清單文件中,每一個activity都

launchmode這個屬性,用於設置這個activity的啟動模式

C. Android設置launchMode為singleTask的Activity怎麼刷新頁面內容

在需要啟動另一個activity,並傳遞一些數據時,我們常採取如下的方法:
Intent intent = new Intent(this, ActivityB.class);

intent.putExtra("name", mUserName);

startActivity(intent);

同時在ActivityB中的onCreate()或onResume()方法中獲取傳遞的數據:

Bundle bundle = getIntent().getExtras();

if (bundle != null && bundle.containsKey("name")) {

mUserName = bundle.getString("name");

}

但是,當把ActivityB的載入方式設置為singleTask或singleInstance時,我們會發現,除了第一次能正確接收以外,其他的好像都是為空?

原來,activity的getIntent()方法只是獲取activity原來的intent。因此要想解決上述問題,可採用的辦法之一是重載onNewIntent()方法。

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

//here we can use getIntent() to get the extra data.

D. android launchmode一般用什麼模式

standard:不管有沒有已存在的實例,都生成新的實例。
singleTop:如果發現有對應的Activity實例正位於棧頂,則重復利用,不再生成新的實例。
singleTask:如果發現有對應的Activity實例,則使此Activity實例之上的其他Activity實例統統出棧,使此Activity實例成為棧頂對象,顯示到幕前。
singleInstance:做為一個獨立的個體存在

android默認為standard,生成新的實例,所以也是最常用的。其實這個問題是需要根據開發的實際情況來設定的。
比如a跳轉到b頁面,b跳轉的c頁面,要使c按返回鍵時直接跳轉到a,則可以設置launchmode為singleInstance。
根據實際情況來定義頁面的啟動模式。

E. android怎麼用intent調用本機的導航

一、其他應用發Intent,執行下列方法:
I/@@@philn(12410):
onCreate
I/@@@philn(12410):
onStart
I/@@@philn(12410):
onResume
發Intent的方法:
Uri
uri
=
Uri.parse("philn://blog.163.com");
Intent
it
=
new
Intent(Intent.ACTION_VIEW,
uri);
startActivity(it);
二、接收Intent聲明:
<activity
android:name=".IntentActivity"
android:launchMode="singleTask"
android:label="@string/testname">
<intent-filter>
<action
android:name="android.intent.action.VIEW"
/>
<category
android:name="android.intent.category.DEFAULT"
/>
<category
android:name="android.intent.category.BROWSABLE"
/>
<data
android:scheme="philn"/>
</intent-filter>
</activity>
三、如果IntentActivity處於任務棧的頂端,也就是說之前打開過的Activity,現在處於
I/@@@philn(12410):
onPause
I/@@@philn(12410):
onStop
狀態的話
其他應用再發送Intent的話,執行順序為:
I/@@@philn(12410):
onNewIntent
I/@@@philn(12410):
onRestart
I/@@@philn(12410):
onStart
I/@@@philn(12410):
onResume
在Android應用程序開發的時候,從一個Activity啟動另一個Activity並傳遞一些數據到新的Activity上非常簡單,但是當您需要讓後台運行的Activity回到前台並傳遞一些數據可能就會存在一點點小問題。
首先,在默認情況下,當您通過Intent啟到一個Activity的時候,就算已經存在一個相同的正在運行的Activity,系統都會創建一個新的Activity實例並顯示出來。為了不讓Activity實例化多次,我們需要通過在AndroidManifest.xml配置activity的載入方式(launchMode)以實現單任務模式,如下所示:
<activity
android:label="@string/app_name"
android:launchmode="singleTask"android:name="Activity1"></activity>

F. android新手 singleTask

在多Activity開發中,有可能是自己應用之間的Activity跳轉,或者夾帶其他應用的可復用Activity。可能會希望跳轉到原來某個Activity實例,而不是產生大量重復的Activity。

這需要為Activity配置特定的載入模式,而不是使用默認的載入模式。

載入模式分類及在哪裡配置

Activity有四種載入模式:

standard

singleTop

singleTask

singleInstance

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

<activity
android:name="ActB"android:launchMode="singleTask"></activity>

也可以在Eclipse
ADT中圖形界面中編輯:

另外,可以看到兩個Activity的taskId是不同的。

G. 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各種詞典,向有道詞典,什麼金山詞典,說極端是因為不想被放置到同一個任務棧裡面,它是全局的系統程序應用,達到節省內存的使用目的。

H. Android 如何實現Activity與Activity之間持續通信。

java">XXXService
{
publicstaticfinalStringACTION_MESSAGE="message";
onStartCommand(xxx){
//yourlogicalxxx
sendBroadcastReceiver(newIntentFilter(ACTION_MESSAGE))
}
}

XXXActivity{
BroadcastReceiverreceiver=newBroadcastReceiver{
onReceive(context,intent){
if(XXXService.ACTION_MESSAGE.equals(intent.getAction())){
doSomething();
}
}
}
onCreate(){
//xxx
registerReceiver(receiver,newIntentFilter(XXXService.ACTION_MESSAGE));
}

onPause(){
unreigsterReceiver(receiver);
}

publicvoiddoSomething(){
xxx;
}

}

I. 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 }

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:627
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:356
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:73
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:297
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:787
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:337
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:202
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:800
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:356
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:582