当前位置: 首页 > 知识库问答 >
问题:

如何检测应用程序是否已使用服务终止?Android

鞠自明
2023-03-14

如何检测应用程序是否已被终止?我找到了一个解决方案,就是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欲望(4.0.2)上不工作

所以我找到了另一个解决办法-

运行一个后台服务,检测应用程序何时被破坏,然后像这样再次启动活动

我有确切的实现,但它什么也做不了?我哪里错了?我的代码和链接里的一样

共有2个答案

龙俭
2023-03-14

如果用户从最近的应用程序中删除了该应用程序,那么您可以通过在服务中覆盖onTaskRemved方法来从操作系统获得通知,并采取相应的操作。一般来说,Android从来不会杀死任何应用程序,除非在内存不足的情况下。在这种情况下,只要您处理所有此类回调,就会给出回调来保存应用程序的状态。

后易安
2023-03-14

我错在哪里

一旦应用程序被销毁,你试图重新打开它是错误的。这是一种古怪的行为...

不过,您可以通过使用alarm manager来实现您的目标,并每隔一秒左右设置一个警报,以检查您的应用程序是否处于活动状态,如果不是,您可以将其带回来。

此外,请注意:

从API 19(KITKAT)开始,警报传递是不准确的:操作系统将转移警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参阅setWindow(int, long, long, PendingIntent)和setExact(int, long, PendingIntent)。目标SdkVersion早于API 19的应用程序将继续看到以前的行为,其中所有警报都在请求时准确传递。

 类似资料:
  • 是否可以通过应用程序洞察来检测在前提下运行的windows服务?不需要像Web应用程序那样让它自动收集应用程序的度量,将自定义事件推送到Azure就足够了。

  • 问题内容: 由于能够在Windows中将Python脚本作为服务运行,因此我能够使Flask应用程序作为服务运行。如果可能的话,怎么办?,但是要停止它,我做不到。我必须在任务管理器中终止该过程。 这是我的run.py,我可以通过run.py install将其变成服务: 我从这篇博文中获得了流程内容:http : //librelist.com/browser/flask/2011/1/10/st

  • 我使用javascript来检查是否安装了应用程序,如果我的应用程序已安装,我想打开我的应用程序,否则它会重定向到play store帐户。问题是,它被重定向到播放商店,即使我已经安装了应用程序 这是我的. html文件,我正在其中检查应用程序。

  • 问题内容: 有没有办法检测是否已连接到控制台终端?例如,我希望能够检测foo.py是否通过以下方式运行: 要么 我问这个问题的原因是,我想确保进度条显示仅在前一种情况下发生(真实控制台)。 问题答案: if sys.stdout.isatty(): # You’re running in a real terminal else: # You’re being piped or redirecte

  • 问题内容: 有时,通过按主屏幕按钮可以关闭应用程序,并且不会调用onDestroy()。我想在整个应用程序关闭时调用一个方法,而我不会在所有活动的onDestroy()中调用我的方法。 问题答案: 在appication类内实现LifecycleObserver然后用作打击: 也可以使用其他事件,例如Lifecycle.Event.ON_DESTROY或ON_CREATE

  • 问题内容: 我正在使用Windows注册表进行一些工作。根据您是以32位还是64位运行python,键值会有所不同。如何检测Python是否以64位应用程序而不是32位应用程序运行? 注意:我对检测32位/ 64位Windows不感兴趣-仅对Python平台感兴趣。 问题答案: import platform platform.architecture() 从Python文档: 查询给定的可执行文