如何检测应用程序是否已被杀死? 我找到了一个解决方案,即 onDestroy
上的呼叫活动@Override
protected void onDestroy() {
super.onDestroy();
Intent intent = new Intent(this, ConnectionStablizer.class);
startActivity(intent);
// code here
}
它在galaxy note 3(4.4.2)上正常工作但不适用于android模拟器(android 4.2.2),galaxy y duos(2.3.6)和htc desire(4.0.2)
所以我找到了另一个解决方案 -
运行后台服务,该服务会检测应用何时被销毁并再次启动活动,如this one
我有确切的实施,但它没有做任何事情?我哪里错了?我的代码与链接中的代码相同
答案 0 :(得分:1)
我哪里错了
尝试在应用程序被销毁后重新打开,这是错误的。这是一种hacky行为......
尽管如此,您可以使用alarm manager来实现目标,并且每隔一秒左右设置一次闹钟,检查您的应用是否还活着,如果不能将其恢复原状。
另外,请注意:
从API 19(KITKAT)开始,警报传递不准确:操作系统 将移动警报以最小化唤醒和电池使用。那里 是支持需要严格交付的应用程序的新API 担保;请参阅setWindow(int,long,long,PendingIntent)和 setExact(int,long,PendingIntent)。应用程序 targetSdkVersion早于API 19将继续看到 以前的行为,其中所有警报都在何时传递 请求。
答案 1 :(得分:1)
如果用户从最近的应用中移除了应用,那么您可以通过覆盖服务中的 onTaskRemoved
方法从操作系统获取通知,并采取相应措施。一般情况下,Android永远不会杀死任何应用程序,除非在低内存条件下。在这种情况下,如果您处理所有这些回调,将给出回调以保存应用程序的状态。