【问题标题】:AlarmManager to start multiple IntentServicesAlarmManager 启动多个 IntentServices
【发布时间】:2013-10-15 15:08:59
【问题描述】:

情况:我们有超过 5 个模块化的 android 应用程序(并且在功能方面确实受到限制),每个应用程序都有自己的 IntentService,它从互联网获取数据并将其存储在本地。

还有一个应用是核心/主要应用。现在我想要每个应用程序在夜间更新其数据。我不想将警报、接收器和其他东西的代码放入每个应用程序中。我希望核心应用设置闹钟,当闹钟响起时,核心应用会调用每个应用的所有 IntentService。

问题:如何防止系统在服务执行期间进入睡眠状态? 一种解决方案是我在每个应用程序中都使用 WakefulServices 的 @CommonsWare 实现,而不是 IntentService,但我真的不想更改所有应用程序中的代码。有什么优雅的方法可以解决这个问题吗?

【问题讨论】:

  • IntentService 切换到WakefulIntentService 需要更改三行代码(导入语句、类声明的extends 部分、onHandleIntent() 重命名为doWakefulWork())并添加一个JAR。如果这工作量太大,你的问题就会大得多。
  • @CommonsWare 但是如果我在我的核心应用程序中创建WakefulIntentService,并在doWakefulWork() 内部调用每个应用程序的IntentService,这会阻止手机进入睡眠状态直到每个IntentService 执行?
  • 核心应用不会有WakefulIntentService。根据您的问题:“然后核心应用程序调用每个应用程序的所有 IntentServices”。 那些将被转换为WakefulIntentServices。

标签: android alarmmanager intentservice commonsware-cwac


【解决方案1】:

感谢@CommonsWare,您的想法真的很有帮助。

总之,解决方案是每个应用都实现WakefulIntentServices,然后核心应用启动所有应用中的WakefulIntentServices

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多