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

标签 android android-service sticky

我的 STICKY 服务遇到问题。我在 MainActivity.class 中调用它并绑定(bind)它:

主要 Activity :

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

还有...

我的服务

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

    return START_STICKY;
}

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

顺便说一句:我不会调用 stopService!

最佳答案

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

如果需要保留状态,可以将变量保存在数据库中。判断服务是否是第一次创建或者重启,可以检查onStartCommand中的intent是否为null。

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

关于android - 应用程序关闭后粘性服务重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073546/

相关文章:

Android:使用 DrawPoint() 的 onDraw 方法导致 Canvas 上的抖动和失真

iPhone/Android 应用程序和与网站交互

android - 如何在android C++文件中打印日志?

jquery - 高级 jQuery "Sticky Bottom"以及滚动侧边栏问题

java - Android Studio gradle 构建无法添加对旧构建 gradle 文件的依赖项

Android:警报在预定时间之前被触发

android - 在服务中运行 Android TTS

java - 在后台播放音乐文件时,根据服务中的 MediaPlayer 对象更新 Activity 中的 Ui 组件

javascript - 防止粘性表单输入的位置变化

jquery - 使粘性侧边栏响应?