我想在我的应用程序关闭时启动我的前台服务。
我尝试了 OnStop() 但这对我来说不是一个好主意,因为它可以触发多次,而我只运行一个实例。
我尝试了 OnDestroy() 但它根本没有触发,因为我在整个应用程序中只使用一个活动,而且大多数时候它被 SWIPE 杀死。
有没有办法可以检测到我的应用程序何时被杀死或关闭?
谢谢!
我想在我的应用程序关闭时启动我的前台服务。
我尝试了 OnStop() 但这对我来说不是一个好主意,因为它可以触发多次,而我只运行一个实例。
我尝试了 OnDestroy() 但它根本没有触发,因为我在整个应用程序中只使用一个活动,而且大多数时候它被 SWIPE 杀死。
有没有办法可以检测到我的应用程序何时被杀死或关闭?
谢谢!
无论您启动多少次,该服务只会运行一个实例。每次客户端启动服务时,该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;
}
您可以在 manifest.xml stopWithTask
="false" 中添加服务描述,并在您的服务中覆盖onTaskRemoved (Intent rootIntent)
以了解启动服务的活动何时停止 API 级别 14 及更高版本。
或者您可以设置一段时间的警报,以检查您的应用程序是否仍在使用AlarmManager
. 您应该小心这一点,因为它可能会根据您选择的时间段消耗电池。