我有一个主要活动,当按下按钮时会创建一个子活动。
如果我在显示子活动时按下任务管理器或主页按钮,子活动就会被销毁,我得到onSaveInstanceState然后调用onDestroy(对于孩子)。
当我切换回我的应用程序时,用户将返回到根活动,并且不会恢复子项。我收到的唯一通知是onResume的主要活动。
我已尝试在root活动中设置alwaysRetainTaskState标志,但没有帮助。
任何人都可以提供任何建议吗?
<application
android:name=".Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar"
android:alwaysRetainTaskState="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".GameActivity"
android:label="@string/app_name"
android:noHistory="true">
<!--android:theme="@style/AppDialogTheme"-->
</activity>
</application>
public void onClickStart(View v) {
((Application) getApplication()).resetCurrentScore();
((Application) getApplication()).resetCurrentLevel();
((Application) getApplication()).resetLives();
Integer level = ((Application) getApplication()).getCurrentLevel();
if (level <= 3) {
Intent GameActivity = new Intent(getApplicationContext(), GameActivity.class);
startActivity(GameActivity);
}
else {
Intent SpellGameActivity = new Intent(getApplicationContext(), SpellGameActivity.class);
startActivity(SpellGameActivity);
}
}
答案 0 :(得分:1)
可能导致此问题的是您的GameActivity块中的android:noHistory
属性。这会导致Activity没有留下任何堆栈跟踪,并且当它离开用户的视图时会在其上调用finish()
,这就是调用onDestroy()
的原因以及为什么活动被销毁
来自文档:
机器人:noHistory
是否应从活动堆栈中删除活动 并在用户导航时完成(调用其finish()方法) 从它开始,它在屏幕上不再可见 - &#34; true&#34;如果它应该 完了,&#34;假&#34;如果不。默认值为&#34; false&#34;。价值 &#34;真&#34;意味着活动不会留下历史痕迹。它 将不会保留在任务的活动堆栈中,因此用户将会 不能回到它。在这种情况下,onActivityResult()永远不会 如果您为此活动的结果启动另一项活动,则会调用。