簡體   English   中英

當按下主頁按鈕時,后台活動被殺死

[英]Activity in background gets killed when Home button is pressed

我遇到一個奇怪的問題,可以說我有兩個活動A和B,應用程序以活動A開始,我繼續進行活動B,請按Android主頁按鈕,返回到使我回到活動B的應用程序。然后按“返回”按鈕(兩個硬件工具欄上的),這將關閉應用程序,但應返回到活動A。活動B沒有覆蓋onBackPressed,並且活動A在清單中聲明為PARENT_ACTIVITY。 我從沒有標志的Intent開始。 知道為什么會這樣嗎? 謝謝

在活動A中,當您調用活動B時,也許您具有以下命令:

finish();

如果是,則應刪除此行。 然后,當您在活動B中按返回鍵時,您應該返回A。否則,請嘗試共享您的代碼。

后退按鈕的行為取決於系統版本。 支持在較舊的Android版本中提供向后導航,如下所述:

https://developer.android.com/training/implementing-navigation/ancestral.html

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

調試后堆棧問題的最佳,最方便的方法是在開發人員選項中啟用“不要保留活動”選項。

那是我最好的猜測。 祝好運!

為了在不破壞舊活動的情況下運行新活動,您必須將標志FLAG_ACTIVITY_NEW_TASK添加到將要運行該活動的意圖中:

 Intent intent = new Intent(MainActivity.this, MainActivity2.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);

設置此標志時:

此活動將成為此歷史記錄堆棧上新任務的開始。 任務(從啟動它的活動到下一個任務活動)定義了用戶可以移動到的原子活動組。 任務可以移到前台和后台; 特定任務中的所有活動始終保持相同的順序。

因此啟動該活動的活動將保留在堆棧中,因此您可以再次調用它,因此即使您之前按了HOME_BUTTON ,也可以在按BACK_BUTTON時再次自動調用它。


並且您必須將@gduh答案與我的結合起來,以確保您必須確保未調用finish(); ;。 ActivityA同時調用ActivityB

感謝您的幫助,問題是由清單android:launchMode = singleinstance中的活動標志引起的(它最初不是我的項目,所以我錯過了,我只是希望我不要通過刪除它來搞砸其他事情)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM