【问题标题】:How to restart a killed service automatically?如何自动重启被杀死的服务?
【发布时间】:2011-01-12 07:10:39
【问题描述】:

服务被杀死后,如何自动重启?

有时甚至不打电话给onDestroy()

【问题讨论】:

  • 如果您的服务被终止,那是因为用户终止了它或操作系统内存不足。这意味着您可能不应该重新启动它。你不应该留下这样长期运行的服务
  • 感谢回复,但是有一些服务,当我杀死它们时,它们很快就会重新启动。

标签: android service ondestroy


【解决方案1】:

我继承了一个 IntentService,所以我必须温柔一点。 当我覆盖 onStartCommand() 时它对我有用,但是

public int onStartCommand(Intent intent, int flags, int startId) {
   super.onStartCommand(intent, flags, startId);
   return START_STICKY;
}

也就是说,让父母做它应该做的事情并返回 START_STICKY。

【讨论】:

  • 我也在做同样的事情。在nexus 5中工作正常。但是在小米中,只要我的应用程序被杀死,服务就会被杀死。
  • 在不好的情况下,您可以启动闹钟意图以确保您的服务是实时的。请注意不要经常使用它,因为唤醒 CPU 会消耗电池寿命。你有一个应用程序可以恢复滑动关闭吗?
【解决方案2】:

覆盖onStartCommand() 并将START_STICKYSTART_REDELIVER_INTENT(取决于您的需要)作为返回值。然后系统将确保重新启动您的服务,直到您明确停止该服务。

http://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT

http://developer.android.com/reference/android/app/Service.html#START_STICKY

【讨论】:

  • 我正在做 START_STICKY。在nexus 5中工作正常并重新启动服务。但是在小米中,一旦我的应用程序被杀死,服务就会被杀死。
【解决方案3】:

如果您的服务被终止,系统将稍后尝试重新启动它。 阅读more

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2019-10-05
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多