以打瞌睡模式启动前台服务
Starting foreground service in doze mode
我正在开发一个通过 wifi 连接到特殊设备的应用程序。我需要在短时间内进行状态更新,resp。使应用程序中我的特殊设备的状态保持最新。 FCM 不是一个选项。我的想法是为用户提供两种选择:使用前台服务进行快速更新或使用定期更新机制以节省电池电量的 "slow" 更新。
我的问题是关于第二个选项。间隔应该在五分钟左右。因此,使用 JobScheduler
是不可能的。但即使使用 AlarmManager
似乎也不是一个选项,因为在打瞌睡 windows 期间我无法访问网络。
我考虑过使用 WakefulBroadcastReceiver
接收 AlarmManager
的 Intent
,需要一个 WakeLock
并转动我的长 运行 Service
通过调用 startForeground()
进入前台。但似乎 startForeground()
方法对 Service
没有影响,只要设备处于休眠模式即可。
我阅读了很多关于 doze 和服务的页面,但不知道如何解决我的问题...有人知道吗?
你应该使用 GcmTaskService。您可以为您的操作安排一些时间间隔,即使在打瞌睡模式下也能正常工作,请通过 link
查看更多信息
您可以使用 setAlarmClock,但不推荐用于您的目的。
相反,您可以使用 setExactAndAllowWhileIdle 并以 15 分钟的间隔手动重新编程。
最佳方式:GCM。
我正在开发一个通过 wifi 连接到特殊设备的应用程序。我需要在短时间内进行状态更新,resp。使应用程序中我的特殊设备的状态保持最新。 FCM 不是一个选项。我的想法是为用户提供两种选择:使用前台服务进行快速更新或使用定期更新机制以节省电池电量的 "slow" 更新。
我的问题是关于第二个选项。间隔应该在五分钟左右。因此,使用 JobScheduler
是不可能的。但即使使用 AlarmManager
似乎也不是一个选项,因为在打瞌睡 windows 期间我无法访问网络。
我考虑过使用 WakefulBroadcastReceiver
接收 AlarmManager
的 Intent
,需要一个 WakeLock
并转动我的长 运行 Service
通过调用 startForeground()
进入前台。但似乎 startForeground()
方法对 Service
没有影响,只要设备处于休眠模式即可。
我阅读了很多关于 doze 和服务的页面,但不知道如何解决我的问题...有人知道吗?
你应该使用 GcmTaskService。您可以为您的操作安排一些时间间隔,即使在打瞌睡模式下也能正常工作,请通过 link
查看更多信息您可以使用 setAlarmClock,但不推荐用于您的目的。 相反,您可以使用 setExactAndAllowWhileIdle 并以 15 分钟的间隔手动重新编程。 最佳方式:GCM。