实际上,它是定期向服务器发送心跳信号,并向服务器提供简单的监控功能
你不能在这里简单地使用定时器。将发生阻塞。你应该结合使用定时器和处理器
它可以在不影响接口的情况下异步发送心跳信号
以下代码可以直接复制并在过去使用
1.前30000在延迟30秒后执行,然后第二30000每30秒执行一次
//每30秒保持一次生命
私有voidstartKeepAliveService(){
keepAliveTimer。时间表(keepAliveTask,300003000);
}
>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;
2.计时器执行时,请他向处理程序发送消息
//定时器周期
TimerkeepAliveTimer=newTimer();
TimerTaskkeepAliveTask=新TimerTask(){
公开募捐{
消息消息=新消息();
消息what=108;
keepAliveHandler。发送消息;
}
};
>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;
3.处理程序在收到命令后执行心跳请求
//3.保时治疗
HandlerkeepAliveHandler=newHandler(){
公共无效handleMessage(消息消息){
开关(msg.what){
案例108:
字符串url=";http://172.19.128.53:8060/api/keepAlive";
OkHttpClientfaceHttpClient=新OkHttpClient();
RequestfaceRequest=新请求。建筑商()
.得到
.url(url)
.build();
//构造调用对象
CallfaceCall=faceHttpClient。newCall(faceRequest);
面对面通话。排队(新的okhttp3.Callback(){
@凌驾
publicvoidonFailure(调用调用,IOE异常){
烤面包。敬酒(HomeActivity.this,";11111";);
}
@凌驾
publicvoidonResponse(CallCall,ResponseResponse)引发IOException{
字符串jsonStr=response。body()。字符串();
//1.将Base64转换为图片
试试看{
JSONObjectjsonObj=新的JSONObject(jsonStr);
字符串代码=jsonObj。getString(";代码";);
如果(";200";等于(代码)){
//成功地生存系统出来Println(";成功保持活力";);
}否则{
系统出来Println(";保持活力失败";);
}
}捕获(JSONExceptione){
系统出来Println(";保持活动响应数据,解析失败";);
e、printStackTrace();
}
}
});
打破
}
超级的handleMessage(msg);
}
};
最新评论