【问题标题】:Starting an IntentService form a WakefulService从 WakefulService 启动 IntentService
【发布时间】:2016-02-14 19:00:22
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    没有。

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

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

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

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

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

    3. 不要直接启动服务,而是使用另一个WakefulBroadcastReceiver,它会启动服务(因此您调用sendBroadcast())。换句话说,将您的第二个IntentService 与您的第一个相同。不过,这会对安全性和效率产生影响。

    【讨论】:

    • 您能否举例说明如何将广播消息从第一个服务发送到另一个广播接收器的第三个选项?另外我在哪里定义新的广播接收器。如果你能给出一个代码示例将非常有帮助
    • @Isj: "如何发送广播消息" -- 致电sendBroadcast()。 “还有我在哪里定义新的广播接收器”——大概在你定义现有接收器的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多