Android 操作系统在内存不足时会终止进程。场景:Android 终止应用程序进程,我通过 Android 启动器或最近任务列表(长按主页按钮)重新打开它。我可以使用以下方法检查 Android 是否在最近查看的活动的 onCreate() 方法中杀死了我的应用程序进程:
@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:单击通知时始终启动顶部活动我可以在堆栈顶部打开活动,如果 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);
是否可以在 Intent 上设置操作、类别或标志,以模拟重新打开应用程序进程,就像用户在新的 Intent / Activity 上完成的一样?
编辑:澄清最后一个问题(尽管我对 Android 的婴儿理解似乎让我失望,所以它可能没有意义):我可以在 Intent 上设置一个动作、类别或标志,就像上面的片段一样,这将允许我确定应用程序进程是否已被操作系统杀死?