【发布时间】:2017-08-06 13:31:13
【问题描述】:
我正在开发一个通过 wifi 连接到特殊设备的应用程序。我需要在短时间内进行状态更新,分别。使我的特殊设备在应用程序中的状态保持最新。 FCM 不是一种选择。我的想法是给用户两个选择:使用前台服务的快速更新或使用定期更新机制的“慢速”更新以节省电池。
我的问题是关于第二个选项。间隔应该在五分钟左右。因此无法使用JobScheduler。但即使使用AlarmManager 似乎也不是一种选择,因为在打瞌睡维护窗口期间我无法获得网络访问权限。
我考虑使用WakefulBroadcastReceiver 来接收AlarmManager 的Intent,需要WakeLock 并通过调用startForeground() 将我长期运行的Service 变为前台。但是,只要设备处于打盹模式,startForeground() 方法似乎对Service 没有影响。
我阅读了很多关于打瞌睡和服务的页面,但不知道如何解决我的问题...有人知道吗?
【问题讨论】:
-
唯一可以真正将设备从打盹中唤醒的是 FCM 消息,除此之外,我认为您真的没有任何选择可以做您想做的事,除非您想告诉所有用户排除您的应用处于打盹模式
标签: android android-service alarmmanager android-wake-lock android-doze