Android 推送和统计最优轮循(心跳策略)探究实践

本文探讨了Android开发中周期性任务的实现,包括使用Thread+Service、Handler和AlarmManager+Broadcast的方式,并分析了它们的优缺点。在心跳监测、推送和统计场景下,针对不同需求,提出了结合多种策略的解决方案。Handler在性能上最优,但无法跨进程;AlarmManager适合在应用退出时保持定时任务,但存在兼容性问题。
摘要由CSDN通过智能技术生成

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() {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值