輪循、全局變量計(jì)數(shù)器

最近做上傳文件和訪問(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ò)誤;

好了 ,這樣要的效果得到了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容