【发布时间】:2013-11-09 15:58:24
【问题描述】:
我有一个关于 Android 中的服务的问题,以及如果活动在任务管理器中被扫除(当您按住主页按钮时),如何防止立即重新启动服务。
我希望服务是持久的并拥有自己的进程和内存映像,所以当我的活动关闭时,在这种情况下,从任务切换器中清除,服务将不会重新启动...
谁能给我看一些解释如何解决这个问题的教程和网站?
【问题讨论】:
标签: android service android-activity task restart
我有一个关于 Android 中的服务的问题,以及如果活动在任务管理器中被扫除(当您按住主页按钮时),如何防止立即重新启动服务。
我希望服务是持久的并拥有自己的进程和内存映像,所以当我的活动关闭时,在这种情况下,从任务切换器中清除,服务将不会重新启动...
谁能给我看一些解释如何解决这个问题的教程和网站?
【问题讨论】:
标签: android service android-activity task restart
服务被设计为在销毁时在后台重新启动(这是一个笼统的说法,有很多因素),因此要确保不会发生这种情况:
要么创建一个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中运行服务,这样当它从前台移除时就被销毁了。
【讨论】:
将您的服务放在一个单独的进程中,如下所示:
转到您在 android 清单中的服务声明并将其更改为:
<service android:name=".ServiceName" android:process=":remote" />
注意:
由于您的服务在单独的进程中运行,因此您必须在 LogCat(如果使用 Android Studio)中切换进程以查看您的调试日志。
【讨论】: