目录
回顾
之前的文章,没看的可以先看下。
autojs websocket后台保活
autojs websocket后台保活2
手机设置
- 前台通知常驻
- 锁进程
- 电池策略设置为无限制
- 电池策略设置锁屏后不断开网络
目前方案
保活心跳
亮屏或充电:客户端心跳保活
黑屏不充电:服务端心跳保活
异常处理
断开重连
onClose 和 onFailure 触发时重新进行连接,在切换wifi、数据或者服务器服务重启可以第一时间重连。
超时重连
每次接收到心跳包后记录下最后活跃时间,开启一个超时重连检查线程,一旦距离心跳时间过长,重启ws甚至重启程序
优化
超时检测缺陷
超时检测还是用了延迟任务,所以会被休眠影响。
但可以使用 device.keepScreenOn(1000)亮屏激活手机,退出休眠状态。
onFailure时激活
onFailure事件由连接状态改变触发,休眠不会影响触发。此时已断开,服务端保活心跳是接收不到的。
主动激活手机,给客户端重连和异常检测留出时间,并保证一个周期内的异常检测可以触发。
断网时不发包不重连
断网的情况下,多次重连后会直接导致脚本崩溃,因此引入网络状态判断,断网时只等待,不做重连。
切换网络时激活
由断网的情况,就有重新连接的情况。
比如出室外离开wifi后,连接4G网络。
在重新连接上网络时,激活手机。让超时重连线程退出休眠,开始起作用。
测试情况
目前在多场景转移后,仍可以保持后台运行。
场景包括:
室外离开wifi后,连接4G网络。
进入室内重新连接wifi。
进入省电模式。
插入电源进行充电。
相关
autojs 网络状态和改变监听