aActivity是程式去入口加載模式是singleInstance a啟動b b啟動c c啟動a a啟動b 為什么會直接跳到d Activity而不是b
uj5u.com熱心網友回復:
完全看不懂
uj5u.com熱心網友回復:
邏輯沒問題,查一下是不是代碼哪里寫錯了uj5u.com熱心網友回復:
第一遍運行是對的 第一遍是abcd然后d在到aactivity a的intent還是到b可是直接就是跳到d了uj5u.com熱心網友回復:
每次跳轉activity的時候寫一個延遲就應該和你分析得一樣了uj5u.com熱心網友回復:
剛學Android為什么要做這種無聊的東西
uj5u.com熱心網友回復:
首先需要說明:SingleInstance 所有的Activity堆疊中只存在一個特定的Activity.
ActivityA啟動ActivityB(SingleInstance模式):
1、所有任務堆疊中不存在ActivityB,則ActivityB會在新的任務堆疊中創建,并且該任務堆疊始終只有ActivityB,ActivityB啟動其他Activity會被放到另外的任務堆疊
2、某個任務堆疊中存在ActivityB,則直接利用。
我寫的測驗代碼如下:
public class AAAActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bbb);
Log.d("log", "onCreate------AAA");
startActivity(new Intent(this, BBBActivity.class));
}
@Override
protected void onResume() {
super.onResume();
Log.d("log", "onResume------AAA");
}
}我的AndroidManifest.xml配置:

我的LogCat日志:

從日志可以看出,這是符合SingleInstance加載模式特性的“某個任務堆疊中存在需要啟動的Activity,不需要重新創建,直接利用。”
現在有幾點需要你再次確認:
1、你的AndroidManifest.xml配置是否給你的這4個Activity都設定了SingleInstance加載模式?
2、你是在什么地方呼叫startActivity(new Intent(this, BBBActivity.class))?
3、你需要在Activity生命周期中列印一些日志,比如我這里在onCreate、onResume里列印了,這樣你才能明確你Activity啟動程序都經歷了什么
uj5u.com熱心網友回復:
樓上正解,建議看看activity啟動模式轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/112847.html
標籤:Android
上一篇:Android 同一個button可以設定一個觸摸監聽事件和一個點擊監聽事件嗎??
下一篇:web測驗的總結
