睡眠/空闲模式导致wifi丢失

时间:2018-04-24 03:52:38

标签: android internet-connection sleep-mode

当我上网时,如果我让我的安卓设备闲置约20至30分钟,互联网连接就会停止。

在我的应用程序中,我已连接第三方服务器,因此睡眠/空闲模式导致连接丢失服务器。

我该如何处理这种情况?

我的要求:我希望我的应用程序应始终与服务器连接以接收通知

1 个答案:

答案 0 :(得分:0)

如果您想要实时通知,则需要Partial Wakelock来保持服务正常运行,再加上WiFiLock以防止wifi网络崩溃。如果您不需要实时通知,则可以使用AlarmManagerBroadcastReceiverWakefulBroadcastReceiverJobScheduler来安排检查新通知,例如每小时左右。

请注意,如果您使用BroadcastReceiver,则无法保证在onReceive()内收到广播时CPU将保持清醒状态。但是,如果使用WakefulBroadcastReceiver,则保证CPU在completeWakefulIntent被触发之前保持清醒状态。 Android O中已弃用WakefulBroadcastReceiver,支持JobScheduler

您还可以阅读有关安排重复活动的here

对于具有打盹模式的设备:

  

系统退出Doze一小段时间让应用程序完成他们的工作   延期活动。在此维护窗口期间,系统将运行   所有待处理的同步,作业和警报,并允许应用程序访问网络

     

如果您需要设置在Doze中触发的警报,请使用   setAndAllowWhileIdle()setExactAndAllowWhileIdle()。警报设置   setAlarmClock()继续正常启动 - 系统退出   在那些警报开始前不久打瞌睡。

参考Optimizing for Doze and App Standby