当Android系统内存不足时,会杀死进程。场景:Android杀死了应用程序进程,我通过Android启动器或最近任务列表(长按主页按钮)重新打开它。我可以在最近查看的活动的onCreate()方法中使用以下代码检查Android是否杀死了我的应用程序进程:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// Re-initialise things that killing the app would have destroyed
}
}
然而,如果Android终止了应用程序进程,并通过一个包含在PendingIntent中的Intent重新打开它,我不知道如何确定应用程序进程是否被Android杀死。因此,我没有重新初始化那些被终止应用程序进程所破坏的事物。
有没有一种方法可以确定当从通知打开新活动时,Android是否杀死了应用程序进程?
我找到了一种hacky解决方案来解决这个问题。使用:Android: always launch top activity when clicked on notification,我可以打开堆栈上的顶部活动(如果Android终止了应用程序进程,则传递savedInstanceState)并处理重新初始化。然后,每个活动都负责使用原始通知意图中的Extras将用户重定向到适当的活动。为此场景设置的意图如下所示:
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
有没有一种可以在意图上设置的操作、类别或标志,可以模拟用户重新打开应用程序过程,但使用新的意图/活动?
编辑:为了澄清最后一个问题(尽管似乎我的 Android 知识很幼稚,所以可能没有意义):有没有一种可以在意图中设置的操作、类别或标志(就像上面的代码片段中那样),可以让我确定应用程序进程是否被操作系统杀死?