我是 android
的新手。我为我的申请苦苦挣扎了大约 3 周。我需要在正常模式和 sleep 模式
下发送和接收数据包。 我的应用
必须每 5 秒交换一次数据。我尝试使用 alarmmanager
但在 android 5 上它不起作用。在 android
5 上,间隔会在 60 秒内更改它。这样的解决方案使电池很快磨损。当我使用普通异步任务而不是 IntentService
时,它仅在屏幕为 ON
且 app
可见时才起作用。当应用程序被隐藏或我点击电源 OFF
时,交换数据停止工作。什么是最佳解决方案?
最佳答案
大多数时候,即使是 RTC_WAKEUP 也无济于事。
当设备处于深度 sleep 模式时适用于我的应用的解决方案:
使用 WakefulBroadcastReceiver结合 AlarmManager。
服务由 startWakefulService() 启动,完成后,它通过调用 completeWakefulIntent(intent) 释放唤醒锁。因此,设备将被允许重新进入休眠状态。
我没有添加任何代码。搜索有关如何将 WakefulBroadcastReceiver 与 AlarmManager 结合使用的示例。甚至 WakefulBroadcastReceiver 文档也有一些模板代码。
同时降低警报频率,这样您就可以避免耗尽太多电池电量。
关于android - 如何使用 CPU 在深度 sleep 模式下执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919715/