http://blog.csdn.net/sk719887916/article/details/51398416 skay亲笔
Android开发中经常会用到周期性执行一个动作的需求,大的场景有推送,统计,即时通讯,小的场景有客户端进行一些小范围的计时器,列入有以下场景。
统计:客户端不断轮询去请求服务器某个接口,上报数据等
1. 统计方案见《 Android 优质精准的用户行为和日志打捞方案》
2. 日志抓取见:《Android全局异常处理(可以做强制退出和carsh日志抓取)》
推送:客户端定时去检测服务器有无新的消息,也有采用socket进行长连接主动推,那么这一类我们可以归类到即时通信中
聊天: 客户端和服务端双向采用轮询机制,业内不叫轮询,称之为心跳机制。客户端定时的连接服务器,服务器轮询去检测客户端是否在线,这叫保证了客户端断线时能及时连接到服务器,服务器也能及时在和客户端掉线时更新状态,
不死进程:话说不死进程我们可以用轮询监测某个服务是否存活,但是一般实现不死进程时候不建议采取轮询机制,一般采用三方互相守护来实现。
常有客户端轮询方案有如下:
一 采用Thread+Service方式
此方式在客户单开启时成功开启一个后台服务,并在服务里启动一个线程,让线程定时去执行应任务,
public class PollService extends Service {
private Boolean isStart = true;
@Override
public IBinder onBind(Intent intent) {
new MyThread().start();
return null;
}
@Override
public void onCreate() {
System.out.println("oncreate()");
MyThread thread = new MyThread();
thread.start();
super.onCreate();
}
private class MyThread extends Thread {
@Override
public void run() {