我目前正在开发一个android应用程序,以用户指定的时间间隔(5分钟,10分钟...)从Web服务器获取数据。我正在使用AlarmManager和WakeLock。警报每隔5-10分钟就会发生。虽然互联网连接似乎没有在睡眠期间工作。大多数人建议我使用WifiLock。纠正我,如果我错了,但不是WifiLock只用于保持WiFi活着? 3G-4G移动数据呢? WifiLock是否保持这种联系?在睡眠中使用互联网 - Android服务
回答
从Android 6开始,由于新的打盹模式,即使使用唤醒锁,设备也进入睡眠状态,因此将忽略它们。
避免设备进入睡眠状态的方法是使用不可忽视的通知启动前台服务。
“避免设备进入睡眠的方式” 但我不想避免睡眠。我想让我的代码在睡眠中执行。哪些已经在做。它只是无法访问因特网,因为无线网络/网络在睡眠期间关闭。 –
所以你可以让你的广播接收机开始一个前台服务,做数据传输?这会唤醒设备,然后在前台服务退出后再回到睡眠状态吗? –
在睡眠期间手机完全停止,cpu停止执行,当Brodacast Receiver处理闹钟时,只有在onReceive返回之前,CPU才会处于活动状态。 –
当设备处于打盹模式时,您无法访问网络。如果您希望从Web服务接收通知或更新,请使用Firebase云消息传递,或者将网络通话延迟至下一次唤醒。你可以看到更多有关在这里打盹限制:
https://developer.android.com/training/monitoring-device-state/doze-standby.html#restrictions
另外,如果您想了解如何检查,如果手机处于打盹模式:
https://developer.android.com/reference/android/os/PowerManager.html#isDeviceIdleMode()
我也尝试过实施前台服务。在“onCreate”方法中,我发出wakelock和wifilock。当设备休眠时,所有网络请求我的应用程序(前台服务)超时。另外,我尝试在<6.0设备上运行我的应用程序,这仍然会发生。所以我相信这与打盹模式无关。 –
发布你的清单以及你用来做这个http调用的服务。另外,你是否在尝试运行请求的同时坚持一个唤醒锁? –
- 1. 睡眠时在Android上打开互联网
- 2. 在Android应用程序开发中使用互联网服务
- 3. “互动”在C++中睡眠
- 4. Android服务长时间睡眠
- 5. 睡眠服务与内容服务器
- 6. 睡眠问题()与Android上的网络任务结合使用
- 7. 如何检查互联网接入服务提供在Android中
- 8. 互联网服务提供商从哪里获得互联网?
- 9. 问题调用WCF服务互联网
- 10. 在睡眠模式下从服务中唤醒Android Wear?
- 11. android:如何从互联网访问移动网络服务器
- 12. 使用wshttpbinding通过互联网使用WCF服务?
- 13. 用于检查互联网连接的Android服务?
- 14. 通过Android中的服务进行互联网监控
- 15. android,如果我从我的单元使用3G数据互联网,wifi是否自动进入睡眠状态?
- 16. 与iPhone通信 - 互联网 - .net Web服务/ php网络服务
- 17. 睡在睡眠中的NSTimer
- 18. 服务:启动时刷新互联网
- 19. 通过互联网消费wcf服务
- 20. 互联网访问服务器2012 R2
- 21. 从互联网访问Apache服务器
- 22. 互联网上的WAMP服务器
- 23. 通过互联网访问WCF服务
- 24. VMware Linux LAMP服务器互联网
- 25. 互联网服务器上的Nexus?
- 26. Android睡觉时的互联网连接问题
- 27. 在睡眠模式下与iPhone交互
- 28. 通过创建一个类来决定使用哪一个睡眠和互相使用休眠睡眠
- 29. Android:使用互联网发送短信
- 30. Android:使用哪个互联网连接?
你有没有尝试使用服务?服务独立运行,即使应用程序关闭,也可以执行。 – UmarZaii
这与我的问题无关。我的代码按预期执行。但是我没有互联网接入。我尝试下载一个文件,但它不起作用。 –
检查了如何打开互联网即使手机处于睡眠模式.. [链接](https://stackoverflow.com/questions/11926640/turn-on-the-internet-on-android-when-睡眠中) – UmarZaii