【发布时间】: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