按下Home按钮时,后台活动会被杀死

时间:2016-08-23 12:14:39

标签: android activity-stack

我遇到了奇怪的问题,让我说我有两个活动A和B,应用程序以活动A开始,我继续活动B按Android主页按钮,返回应用程序,它将我带回活动B.然后我按下返回按钮(要么是工具栏中的硬件),这会关闭应用程序,但它应该将我返回到活动A.活动B没有覆盖onBackPressed并且在清单中将活动A声明为PARENT_ACTIVITY。我是在没有标志的情况下用Intent开始的。知道为什么会这样吗?感谢

4 个答案:

答案 0 :(得分:1)

在您的活动A中,当您致电活动B时,可能您有以下命令:

finish();

如果是,则应删除此行。然后,当您从活动B中按回键时,您应该返回A. 如果没有,也许尝试分享您的代码。

答案 1 :(得分:1)

后退按钮的行为取决于系统版本。支持在较旧的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>

调试回拨问题的最佳和最方便的方法是启用“不要保持活动”。开发人员选项中的选项。

这是我最好的猜测。祝你好运!

答案 2 :(得分:1)

为了在不破坏旧活动的情况下运行新活动,您必须将标志FLAG_ACTIVITY_NEW_TASK添加到将运行活动的意图:

 Intent intent = new Intent(MainActivity.this, MainActivity2.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
设置此标志时

  

此活动将成为此历史新任务的开始   堆。任务(从启动它的活动到下一个任务   activity)定义用户可以移动的原子活动组   至。任务可以移动到前台和后台;全部   特定任务中的活动始终保持相同的顺序。

因此启动它的活动将保留在堆栈中,因此您可以再次调用它,因此即使您按下 BACK_BUTTON 也可以再次自动调用它HOME_BUTTON 早些时候。

并且您必须将@gduh答案与我的结合起来,因为您必须确保在调用finish();时未在ActivityA中致电ActivityB

答案 3 :(得分:1)

感谢您的帮助,问题是由清单android中的活动的这个标志引起的:launchMode = singleinstance(它原本不是我的项目所以我错过了,我只是希望我没有把其他东西搞砸了删除它)