其实就是定时去给服务器,发送心跳,给服务器提供简单的监控功能.
这里不能简单的用Timer实现,会出现阻塞的情况,要使用timer和Handler结合的方式
实现在不影响界面的情况下,异步发送心跳.
下面的代码可以直接copy过去就用吧
1.第一个30000是延时30秒执行,然后第二个30000是每隔30秒执行一次//30秒保活一次privatevoidstartKeepAliveService(){(keepAliveTask,30000,30000);}2.定时器执行的时候,让他去发送一个消息给handler//定时器循环TimerkeepAliveTimer=newTimer();TimerTaskkeepAliveTask=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();=108;(message);}};3.handler去收到命令以后去执行,心跳请求//3.定时保活处理HandlerkeepAliveHandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(){case108:Stringurl="";OkHttpClientfaceHttpClient=newOkHttpClient();RequestfaceRequest=().get().url(url).build();//构造Call对象CallfaceCall=(faceRequest);((){@OverridepublicvoidonFailure(Callcall,IOExceptione){(,"11111");}@OverridepublicvoidonResponse(Callcall,Responseresponse)throwsIOException{StringjsonStr=().string();//1.将base64,转换为图片try{JSONObjectjsonObj=newJSONObject(jsonStr);Stringcode=("code");if("200".equals(code)){//保活成功("保活成功");}else{("保活失败");}}catch(JSONExceptione){("保活响应数据,解析失败");();}}});break;}(msg);}};