我非常喜欢CWAC Advanced Android手册中关于AlarmManager的部分。我现在担心我的应用程序的工作被杀死,因为它没有唤醒锁定。这就是我担心的问题。我的担心是理性的吗?
见下面的代码。如果doWakefulWork必须启动另一项服务怎么办?在这种情况下,其他服务需要启动WakeLock才能继续运行,但是服务启动和onHandleIntent结束之间的时间间隔可以释放唤醒锁!
@Override
final protected void onHandleIntent(Intent intent) {
try {
doWakefulWork(intent)
}
finally {
getLock(this).release();
}
}
我的回答是: doWakefulWork必须在同一个线程上执行,除非其他服务也是WakefulIntentService实例,否则它无法启动其他线程或服务。
我是对的吗?
答案 0 :(得分:1)
如果您希望其他服务保留WakeLock
,那么他们必须是WakefulIntentService
或自己获取WakeLock
。如果您担心发送意图和其他服务实际获取锁定之间的时间,您需要实现某种类型的阻止机制(即阻止doWakefulWork
方法结束,直到其他服务具有开始并获得了锁)