最近做上傳文件和訪問(wèn)阿里云的消息隊(duì)列;在訪問(wèn)消息隊(duì)列時(shí)需要去輪循,所以在網(wǎng)上查了一下,一開(kāi)始用的AlarmManager和PollingUtils,這兩個(gè)類(lèi)在網(wǎng)上隨便一搜都可以查到;然后寫(xiě)了一個(gè)查詢(xún)消息的服務(wù),但是后來(lái)發(fā)現(xiàn)每次都會(huì)經(jīng)歷將近一分鐘才會(huì)去輪循,查了一下原因,好像是在android5.2(記不太清了)之后AlarmManager的時(shí)間不能低于一分鐘;所以放棄了這個(gè)方法;
現(xiàn)在是利用Timer去做的輪循:
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == PEEKMESSAGEDATA) {
AliyunMNSUtil.peekMessage();
}
};
};
Timer timer = new Timer();
//定時(shí)發(fā)送消息
TimerTask task = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = PEEKMESSAGEDATA;
handler.sendMessage(message);
}
};
timer.schedule(task, 5000, 5000);// 5秒之后執(zhí)行task,經(jīng)過(guò)5秒再次執(zhí)行
全局變量
為了在項(xiàng)目中隨處可以使用計(jì)數(shù)器,便在繼承Application的Appcontext中定義了三個(gè)方法:
public int number;
public int getNumber(){
return number;
}
public int addNumber(){
return number++;
}
public int subNumber(){
return number--;
}
然后在onCreate()中給number賦值(不然取得的值每次都是初始值);
然后在項(xiàng)目中需要的地方
AppContext.getInstance().addNumber();//計(jì)數(shù)器+1
AppContext.getInstance().subNumber();//計(jì)數(shù)器-1
這里全局類(lèi)的變量修飾符都改為public,并直接在方法里set;沒(méi)有去實(shí)例化對(duì)象,因?yàn)槊看稳?shí)例化對(duì)象都會(huì)報(bào)空指針之類(lèi)的錯(cuò)誤;
好了 ,這樣要的效果得到了