应用程序关闭后粘性服务重新启动

时间:2013-11-19 14:00:28

标签: android android-service sticky

我的STICKY服务遇到了麻烦。我在我的MainActivity.class中调用它并绑定它:

MainActivity

Intent intent = new Intent(this, MyService.class);
ComponentName MyCompName= startService(intent);
bindService(intent, MyConnection, Context.BIND_AUTO_CREATE);

和...

为MyService

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    return START_STICKY;
}

我希望此服务运行STICKY,永远不会关闭或重新启动。但是当我关闭我的应用程序时,调用onCreate() - MyService方法并重置所有变量,我不知道为什么。

BTW:我不打电话给stopService!

1 个答案:

答案 0 :(得分:4)

STICKY和NON_STICKY服务之间的区别在于STICKY服务在被杀后重新启动。我认为不可能保证您的服务永远不会重新启动 - 如果内存不足,可能会重新启动。

如果需要保留状态,可以将变量保存在数据库中。要查看服务是第一次创建还是重新启动,您可以检查onStartCommand中的意图是否为空。

如果您只需要在创建服务时保留初始状态,则可以使用START_REDELIVER_INTENT,它将重新发送用于在onStartCommand中创建服务的Intent。