我有一个有很多活动的应用程序。其中有InitialActivity
加载核心数据。这是一个启动器活动,如果没有加载的数据,下一个活动都无法生存。
因此,我启动了应用,InitialActivity
正在加载数据,然后导航到MainActivity
,然后我正在浏览某些FarAwayActivity
。然后我转向其他应用程序(其中一些是重型游戏),我的应用程序在后台被杀死。我在我的Application.onCreate()
中插入了日志调用,当我切换回应用程序时,我可以看到它再次被调用。所以我确定应用程序在后台被杀死了。但是Android将最后一个FarAwayActivity
带到顶部并立即崩溃,因为所有加载的数据都是空的。
所以问题是:我怎样才能告诉应用程序从InitialActivity
开始时(并且只有当它被杀死和恢复时)?像“忘记我的背堆”,但可能是自动地,在清单中。
我已经阅读并尝试了Activity tag docs的所有内容,但没有任何内容符合我的期望。最接近的是android:clearTaskOnLaunch="true"
,但是当从桌面重新启动应用程序时,它会清除堆栈上的所有其他活动(并且应用程序尚未被杀死,因此所有数据都可用)。为了清楚起见,我想在应用程序实际被杀之后才开始使用InitialActivity。
答案 0 :(得分:0)
首先我建议您不要将其存储在应用程序中,而是可以通过Intent将数据传递给Activity。 这样,当Activity恢复时,保存的Intent将恢复其数据。
现在提出你的实际问题:
如果他们是你应该叫这个:
Intent newIntent = new Intent(FarAwayActivity.this, InitialActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);
现在应该清除堆栈直到找到InitialActivity。