如果doWakefulWork启动另一项服务怎么办?

时间:2011-05-04 18:52:41

标签: android service commonsware-cwac

我非常喜欢CWAC Advanced Android手册中关于AlarmManager的部分。我现在担心我的应用程序的工作被杀死,因为它没有唤醒锁定。这就是我担心的问题。我的担心是理性的吗?

见下面的代码。如果doWakefulWork必须启动另一项服务怎么办?在这种情况下,其他服务需要启动WakeLock才能继续运行,但是服务启动和onHandleIntent结束之间的时间间隔可以释放唤醒锁!

@Override
final protected void onHandleIntent(Intent intent) {
 try {
  doWakefulWork(intent)
  }
 finally {
   getLock(this).release();
 }
}

我的回答是: doWakefulWork必须在同一个线程上执行,除非其他服务也是WakefulIntentService实例,否则它无法启动其他线程或服务。

我是对的吗?

1 个答案:

答案 0 :(得分:1)

如果您希望其他服务保留WakeLock,那么他们必须是WakefulIntentService或自己获取WakeLock。如果您担心发送意图和其他服务实际获取锁定之间的时间,您需要实现某种类型的阻止机制(即阻止doWakefulWork方法结束,直到其他服务具有开始并获得了锁)