0

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

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

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

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

我对吗?

4

1 回答 1

1

如果您希望您的其他服务持有 a WakeLock,那么是的,它们必须是 aWakefulIntentServiceWakeLock自行获取。如果您担心发送意图和其他服务实际获取锁之间的时间,您需要实现某种类型的阻塞机制(即阻止doWakefulWork方法结束,直到其他服务启动并获取锁)

于 2011-05-04T19:06:06.007 回答