当我上网时,如果我让我的安卓设备闲置约20至30分钟,互联网连接就会停止。
在我的应用程序中,我已连接第三方服务器,因此睡眠/空闲模式导致连接丢失服务器。
我该如何处理这种情况?
我的要求:我希望我的应用程序应始终与服务器连接以接收通知
答案 0 :(得分:0)
如果您想要实时通知,则需要Partial Wakelock
来保持服务正常运行,再加上WiFiLock
以防止wifi网络崩溃。如果您不需要实时通知,则可以使用AlarmManager
或BroadcastReceiver
或WakefulBroadcastReceiver
或JobScheduler
来安排检查新通知,例如每小时左右。
请注意,如果您使用BroadcastReceiver
,则无法保证在onReceive()
内收到广播时CPU将保持清醒状态。但是,如果使用WakefulBroadcastReceiver
,则保证CPU在completeWakefulIntent
被触发之前保持清醒状态。 Android O中已弃用WakefulBroadcastReceiver
,支持JobScheduler
您还可以阅读有关安排重复活动的here。
对于具有打盹模式的设备:
系统退出Doze一小段时间让应用程序完成他们的工作 延期活动。在此维护窗口期间,系统将运行 所有待处理的同步,作业和警报,并允许应用程序访问网络
如果您需要设置在Doze中触发的警报,请使用
setAndAllowWhileIdle()
或setExactAndAllowWhileIdle()
。警报设置setAlarmClock()
继续正常启动 - 系统退出 在那些警报开始前不久打瞌睡。