从 WakefulService 启动 IntentService

Starting an IntentService form a WakefulService

我有一个广播接收器表单,我正在使用 startWakefulSerivce(context,i).

启动一个意图服务(比如 s1)

我正在使用 startService(i) 从服务 s1 启动另一个 IntentService(比如 s2)。在 s1 中,我使用

释放唤醒锁
 GCMBroadcastReceiver.completeWakefulIntent(intent);

现在,第二个 IntentService s2 仍会持有唤醒锁,即,如果设备休眠,它是否会 运行 在后台运行。 如果不是,我如何才能像第一个一样清醒地启动第二个 Intent Service s2?

Now will the second IntentService s2 stll hold the wakelock

没有

If not how can I start the second Intent Service s2 wakefully like the first one?

恕我直言,最好的答案是不要有第二个 IntentService,因为不清楚为什么要将工作分成两个 IntentService 实现。

假设您有分手的原因,您的主要选择是:

  1. 使用 my WakefulIntentService,这与必须由 BroadcastReceiver 启动无关(尽管这肯定是一种常见的使用模式)。

  2. 非常小心地管理你自己的WakeLock

  3. 不是直接启动服务,而是使用另一个 WakefulBroadcastReceiver 启动服务(所以你调用 sendBroadcast())。换句话说,将您的第二个 IntentService 与第一个一样对待。不过,这会影响安全性和效率。