Android服务在应用程序被强制关闭时自动重启

5

我正在开发一款通过接收器与我的服务进行通信的应用程序。

服务代码

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(LOCATION_UPDATE);
    mBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            receiverWorks(intent);
        }
    };
  this.registerReceiver(mBroadcastReceiver, intentFilter);
  return START_STICKY;
    }

服务的清单声明

    <service
        android:name="com.test.IService"
        android:enabled="true"
        android:label="IService"
        android:process=":iservice" >
    </service>

问题是应用程序(使用此服务的应用程序)被杀后,服务会重新启动。我如何防止这种情况发生?尝试删除android:process,但无法解决问题。
等待您的帮助。
谢谢。

1
你找到解决方案了吗?我也遇到了同样的问题。 - StuStirling
1个回答

8

服务会因为在 onStartCommand() 中返回 START_STICKY 而自动重启。

你需要返回 start_not_sticky 代替。

更多信息请阅读这篇文章:START_STICKY 和 START_NOT_STICKY


7
感谢您的回复。但是据我所知,START_STICKY会在服务停止后重新创建自身。问题是为什么我的应用程序在关闭后销毁了该服务。 - dracula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接