轮循、全局变量计数器

最近做上传文件和访问阿里云的消息队列;在访问消息队列时需要去轮循,所以在网上查了一下,一开始用的AlarmManager和PollingUtils,这两个类在网上随便一搜都可以查到;然后写了一个查询消息的服务,但是后来发现每次都会经历将近一分钟才会去轮循,查了一下原因,好像是在android5.2(记不太清了)之后AlarmManager的时间不能低于一分钟;所以放弃了这个方法;

现在是利用Timer去做的轮循:

private Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

if (msg.what == PEEKMESSAGEDATA) {

AliyunMNSUtil.peekMessage();

}

};

};

Timer timer = new Timer();

//定时发送消息

TimerTask task = new TimerTask() {

@Override

public void run() {

Message message = new Message();

message.what = PEEKMESSAGEDATA;

handler.sendMessage(message);

}

};

timer.schedule(task, 5000, 5000);// 5秒之后执行task,经过5秒再次执行

全局变量

为了在项目中随处可以使用计数器,便在继承Application的Appcontext中定义了三个方法:

public int number;

public int getNumber(){

return number;

}

public int addNumber(){

return number++;

}

public int subNumber(){

return number--;

}

然后在onCreate()中给number赋值(不然取得的值每次都是初始值);

然后在项目中需要的地方

AppContext.getInstance().addNumber();//计数器+1

AppContext.getInstance().subNumber();//计数器-1

这里全局类的变量修饰符都改为public,并直接在方法里set;没有去实例化对象,因为每次去实例化对象都会报空指针之类的错误;

好了 ,这样要的效果得到了

你可能感兴趣的:(轮循、全局变量计数器)