1

我想在我的应用程序关闭时启动我的前台服务。

我尝试了 OnStop() 但这对我来说不是一个好主意,因为它可以触发多次,而我只运行一个实例。

我尝试了 OnDestroy() 但它根本没有触发,因为我在整个应用程序中只使用一个活动,而且大多数时候它被 SWIPE 杀死。

有没有办法可以检测到我的应用程序何时被杀死或关闭?

谢谢!

4

2 回答 2

1

无论您启动多少次,该服务只会运行一个实例。每次客户端启动服务时,该onStartCommand方法都会触发。 return Service.START_STICKY;让您的服务在您的应用退出后继续在后台运行。但是请注意,如果事情变得繁忙并且手机需要内存,您的服务将被终止,并且您必须像@Onur 建议的那样以保守的定期AlarmManager意图重新启动它。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // the service is started so after all clients are unbound it stays
    // running
    return Service.START_STICKY;
}
于 2014-05-29T20:18:01.590 回答
0

您可以在 manifest.xml stopWithTask="false" 中添加服务描述,并在您的服务中覆盖onTaskRemoved (Intent rootIntent)以了解启动服务的活动何时停止 API 级别 14 及更高版本。

或者您可以设置一段时间的警报,以检查您的应用程序是否仍在使用AlarmManager. 您应该小心这一点,因为它可能会根据您选择的时间段消耗电池。

于 2014-05-29T19:34:57.470 回答