从WakefulService启动IntentService

时间:2016-02-14 19:00:22

标签: android android-service android-wake-lock android-intentservice android-broadcastreceiver

我有一个广播接收器表单,我正在使用startWakefulSerivce(context,i)开始一个意向服务(比如s1)。

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

没有

  

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

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

假设您有分割的原因,您的主要选项是:

  1. 使用my WakefulIntentService,这与BroadcastReceiver无关(虽然这肯定是一种常见的使用模式)。

  2. 非常谨慎地管理您自己的WakeLock

  3. 不是直接启动服务,而是使用另一个启动服务的WakefulBroadcastReceiver(因此您调用sendBroadcast())。换句话说,将第二个IntentService视为与第一个an相同。然而,这具有安全性和效率的影响。