【发布时间】:2015-01-17 15:32:23
【问题描述】:
我想知道必须满足什么条件才能让 Android 停止 Service,除了明显的内存不足。
看,我运行一个引导程序 Service,持有一个本地 BroadcastReceiver。该服务本身包含一个状态机,因此我从一个引导状态转换到另一个。每个状态转换函数都会启动AsyncTask 或IntentService,一旦完成,它会将Intent 分派回Service,让它知道任务已成功执行。然而,在此期间,服务只是停止,因此意图被派发到空无一物,这令人沮丧。
我不想使用前台服务,也不想为了让我的服务保持活力而欺骗。我也不想依赖onHandleIntent() 的IntentService,因为IntentService 失去了它的所有状态,这意味着一旦运行所有成员都会被清空,所以当 stateA 完成并且 stateB 应该被启动时,整个状态机为空,所有以前的状态都消失了,等等......
我将Services 上下文提交给每个IntentService/AsnycTask,我认为,只要它们持有服务上下文的引用,Service 就不会停止。可悲的是,事实并非如此......
我是否必须在 doInBackground() 和 AsyncTask 时调用上下文中的方法,以保持 Service 活着或其他什么?
【问题讨论】:
标签: android service android-context