2013-10-30 99 views
0

我有一個Activity A開始Activity B(對話框主題),其中Activity A然後在後臺可見,B在前臺。Android:背景活動不可見

但是,當按主頁按鈕,然後再次返回到應用程序時,A不再可見 - 只有B。 B的onResume()叫,但不是A,這也許是應該的......在A

onDestroy()不被稱爲我可以看到。什麼可能是這種行爲的原因?

A被定義爲singleInstance MAIN/LAUNCHER活動,並通過SettingsActivity.show開始B

public static void show(final Context context, final boolean inRegisterFlow) { 
    final Intent intent = new Intent(context, SettingsActivity.class); 
    context.startActivity(intent); 
} 
+2

您可以請發佈您的代碼。 –

+0

發佈您的清單。問題是你使用launchMode'singeInstance'。你爲什麼用這個?它會產生比解決(通常)更多的問題。 –

回答

1

的問題是你的launchMode="singleInstance'使用。如果ActivityA是使用launchMode="singleInstance"定義的,那麼當ActivityA啓動ActivityB時,ActivityB將以不同的任務結束。當用戶按下BACK按鈕時,兩個任務(包含ActivityA和ActivityB的任務)都將在後臺結束。當用戶將包含ActivityB的任務帶到前臺時,其他任務(包含ActivityA)仍處於後臺。

您的架構聽起來破碎。如果您希望它像Dialog一樣行事,那麼爲什麼要啓動一個Dialog主題的活動?你爲什麼不在ActivityA中顯示對話框?你爲什麼使用launchMode="singleInstance"?一般來說,這是錯誤的(除非你正在開發一個HOME屏幕替換),並且它通常會產生比解決問題更多的問題,因爲大多數開發人員並不真正瞭解它是如何工作的。

而且,onResume()在ActivityB上被調用,因爲它被恢復(即:它在前臺)。不在ActivityA上調用onResume(),因爲該活動不在前臺。 「恢復狀態」中只有1次活動。所有其他活動都「暫停」。

+0

謝謝!將launchMode更改爲'singleTop'(或者我應該甚至使用'normal'?),我不知道爲什麼它設置爲singleInstance,因爲我沒有從頭開發該應用程序。無論如何,這解決了我的問題! – Dan

0

也許速戰速決適用於此處,加A.onResume()得到的onResume()的實現,也就是因爲當你回來時,A不會從背景中恢復。

但是,這只是一個不錯的辦法