0

我有一个广播接收器表单,我正在使用它启动一个意图服务(比如 s1)startWakefulSerivce(context,i).

从服务 s1 我开始使用另一个 IntentService(比如 s2)startService(i)。在 s1 我正在释放唤醒锁

 GCMBroadcastReceiver.completeWakefulIntent(intent);

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

4

1 回答 1

2

现在将第二个 IntentService s2 stll 持有唤醒锁

不。

如果不是,我怎样才能像第一个一样清醒地启动第二个 Intent Service s2?

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

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

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

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

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

于 2016-02-14T19:07:54.573 回答