Android服务在应用程序重启时保持终止

时间:2015-12-04 22:37:01

标签: java android service

我已经阅读了十几篇关于如何设置独立服务的帖子。

由于我的研究和测试,我做了以下工作:

  1. 在我的服务上创建了一个过程标记,因此我的服务在一个单独的线程中运行:

    <service android:name=".Services.S_GPS" android:process="sgps"></service>
    
  2. 设置onStartCommand以返回START_NOT_STICKY并在前台启动服务:

  3. -

    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        Notification notification = new Notification();
        startForeground(1337,notification);
        return START_NOT_STICKY;
    }
    

    即使在我终止或重新启动应用程序之后,服务也会重新启动:

      

    W / ActivityManager:调度崩溃服务的重启   co.myapp.app/.Services.S_GPS in 1000ms

    我的问题是,我还缺少什么来阻止我的服务在应用重启时关闭?我怀疑我仍然做错了,服务正在应用程序的主题中运行。我需要我的服务100%独立于应用程序运行,我不需要他们进行通信(除了应用程序启动它)。

    您是否可以建议我在关闭或重新启动应用时如何防止服务崩溃?

    更新要通过重新启动来澄清,我的意思是当我重建我的apk到手机。一旦我开始服务,我就会注释掉启动服务的代码。当我重新安装我的apk时,它会终止服务(即使没有代码重新创建它)。服务无法独立于apk重新安装运行吗?

1 个答案:

答案 0 :(得分:2)

  

通过重新启动来澄清我的意思是当我重建我的apk到手机。

如果您卸载,升级或重新安装该应用,则与该应用关联的所有进程都将终止。至少在升级方案中,您可以在ACTION_PACKAGE_REPLACED的清单中注册接收器以查找并重新启动您的服务,但我还没有尝试过。

  

服务无法独立于apk重新安装运行吗?

仅当它不在该APK中,而是在单独的APK中的单独应用时。