我想在应用程序关闭时启动前台服务。
我试过OnStop(),但这对我来说不是一个好主意,因为它可以触发多次,而且我只能运行一个实例。
我尝试过OnDestroy(),但它只是不会触发,因为我只在整个应用程序中使用一个活动,而且大部分时间都是使用SWIPE杀死它。
有什么方法可以检测我的应用程序何时被杀或关闭?
谢谢!
答案 0 :(得分: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;
}
答案 1 :(得分:0)
您可以在manifest.xml stopWithTask
=“false”中添加服务描述,并在服务中覆盖onTaskRemoved (Intent rootIntent)
,以了解启动服务的活动何时停止在API级别14及更高级别。
或者您可以设置一段时间的闹钟,以使用AlarmManager
检查您的应用程序是否仍在运行。你应该小心这个,因为它可能会根据你选择的时间消耗电池。