[英]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.