应用程序退出(或被杀死)时启动服务

时间:2014-05-29 18:55:59

标签: android xamarin.android android-intentservice

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

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

我尝试过OnDestroy(),但它只是不会触发,因为我只在整个应用程序中使用一个活动,而且大部分时间都是使用SWIPE杀死它。

有什么方法可以检测我的应用程序何时被杀或关闭?

谢谢!

2 个答案:

答案 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检查您的应用程序是否仍在运行。你应该小心这个,因为它可能会根据你选择的时间消耗电池。

相关问题