我正在阅读the official documentation about Services,但我有点困惑,因为有些事情并不那么明确。
让我们看看这个片段:
public class MyService extends Service {
public int onStartCommand(Intent intent, int flags, int startID) {
while(...any condition...) {
//some actions
}
return START_SOMETHING;
}
public IBinder onBind(Intent intent) {
return null;
}
}
我怀疑如下:
while
循环中?stopService()
时,是否等待onStartCommand()
转到退货声明?stopSelf()
电话?在退货声明之前?答案 0 :(得分:0)
Android系统是否可以销毁服务,即使它仍在while循环中?
是。出于某种原因,极低的内存压力(例如),Android系统会在不调用Service
方法的情况下杀死onDestroy()
。为什么?因为Service
总是在UI线程上运行。
当我调用stopService()时,它是否等待onStartCommand()转到return语句?
没有。当Android系统杀死Service
时,将执行Return语句的操作。但是,如果您手动调用stopSelf()
,则将忽略return语句的操作。
我应该在哪里插入stopSelf()调用?在退货声明之前?
随时随地致电stopSelf()
。例如,如果用户按下按钮,请拨打stopSelf()
以停止Service
播放音乐。