【问题标题】:How to prevent service from restarting after activity is swept from task switcher?从任务切换器清除活动后,如何防止服务重新启动?
【发布时间】:2013-11-09 15:58:24
【问题描述】:

我有一个关于 Android 中的服务的问题,以及如果活动在任务管理器中被扫除(当您按住主页按钮时),如何防止立即重新启动服务。

我希望服务是持久的并拥有自己的进程和内存映像,所以当我的活动关闭时,在这种情况下,从任务切换器中清除,服务将不会重新启动...

谁能给我看一些解释如何解决这个问题的教程和网站?

【问题讨论】:

    标签: android service android-activity task restart


    【解决方案1】:

    服务被设计为在销毁时在后台重新启动(这是一个笼统的说法,有很多因素),因此要确保不会发生这种情况:

    要么创建一个bound service,它与调用活动一起创建和销毁:

    此示例取自文档

    public class LocalService extends Service {
        private final IBinder mBinder = new LocalBinder();
    
        public class LocalBinder extends Binder {
            LocalService getService() {
                return LocalService.this;
            }
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            return mBinder;
        }
    }
    

    或者在foreground中运行服务,这样当它从前台移除时就被销毁了。

    【讨论】:

      【解决方案2】:

      将您的服务放在一个单独的进程中,如下所示:

      转到您在 android 清单中的服务声明并将其更改为:

      <service android:name=".ServiceName" android:process=":remote" />
      

      注意:

      由于您的服务在单独的进程中运行,因此您必须在 LogCat(如果使用 Android Studio)中切换进程以查看您的调试日志。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-21
        • 1970-01-01
        • 2021-04-14
        • 2011-04-21
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多