如何检测应用程序是否已使用服务被杀?安卓

时间:2015-11-08 09:21:48

标签: android

如何检测应用程序是否已被杀死? 我找到了一个解决方案,即 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

我有确切的实施,但它没有做任何事情?我哪里错了?我的代码与链接中的代码相同

2 个答案:

答案 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永远不会杀死任何应用程序,除非在低内存条件下。在这种情况下,如果您处理所有这些回调,将给出回调以保存应用程序的状态。