Android 从WakefulService启动IntentService

Android 从WakefulService启动IntentService,android,android-service,android-wake-lock,android-intentservice,android-broadcastreceiver,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将保持唤醒锁,即,如果设备睡眠,它将在后台运行。 如果没有,我如何像第一个一样清醒地启动第二个意图

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

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

 GCMBroadcastReceiver.completeWakefulIntent(intent);
现在,第二个IntentService s2 stll将保持唤醒锁,即,如果设备睡眠,它将在后台运行。 如果没有,我如何像第一个一样清醒地启动第二个意图服务s2

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

没有

如果没有,我如何像第一个一样清醒地启动第二个意图服务s2

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

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

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

  • 非常小心地管理自己的
    WakeLock

  • 不要直接启动服务,而是使用另一个启动服务的
    WakefulBroadcastReceiver
    (因此您可以调用
    sendBroadcast()
    )。换句话说,对待第二个
    IntentService
    和第一个一样。不过,这会对安全性和效率产生影响

  • 现在,第二个IntentService s2 stll是否将保持唤醒锁

    没有

    如果没有,我如何像第一个一样清醒地启动第二个意图服务s2

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

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

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

  • 非常小心地管理自己的
    WakeLock

  • 不要直接启动服务,而是使用另一个启动服务的
    WakefulBroadcastReceiver
    (因此您可以调用
    sendBroadcast()
    )。换句话说,对待第二个
    IntentService
    和第一个一样。不过,这会对安全性和效率产生影响


  • 关于如何从第一个服务向另一个广播接收器发送广播消息,请给出第三个选项的示例?另外,我在哪里定义新的广播接收器。如果您能给出一个代码,那将非常有帮助example@Isj:“如何发送广播消息”--调用
    sendBroadcast()
    。“我在哪里定义新的广播接收器”--大概是在您定义现有接收器的地方。您能否给出第三个选项的示例,说明如何将广播消息从第一个服务发送到另一个广播接收器?另外,我在哪里定义新的广播接收器。如果您能给出一个代码,那将非常有帮助example@Isj:“如何发送广播消息”--调用
    sendBroadcast()
    。“我在哪里定义新的广播接收器”——大概是在您定义现有接收器的地方。