Android 輪詢總結(jié)

輪詢應(yīng)用場景

Android中涉及到將服務(wù)器中數(shù)據(jù)變化信息通知用戶一般有兩種辦法,推送和輪詢。
譬如有這樣一個app,實時性要求不高,每天只要能獲取10次最新數(shù)據(jù)就能滿足
要求了,這種情況顯然輪詢更適合一些,推送顯得太浪費,而且更耗電。

1 界面相關(guān)的輪詢請求

實現(xiàn)步驟
1 在初始化界面時或者在某個方法內(nèi)創(chuàng)建Timer類
2 定義一個類繼成TimerTask,在創(chuàng)建Timer類的地方進行創(chuàng)建對象
3 調(diào)用timer.schedule(task, 1 * 1000, 1 * 1000); 方法進行設(shè)置輪詢的間隔時間
這三個參數(shù):1 我們第2 步定義TimerTask類,2 表示的意思是我們需要多長時間
執(zhí)行我們的TimerTask類中run方法,3 設(shè)置輪詢間隔的時間
代碼如下:
這是啟動輪尋的代碼
 timer = new Timer();
 task = new Task();
 //schedule 計劃安排,時間表
 timer.schedule(task, 1 * 1000, 1 * 1000);
 ………………………………………………
/**
 * TimerTask對象,主要用于定時拉去服務(wù)器信息
 */
public class Task extends TimerTask {
    @Override
    public void run() {
        Log.e("AAA", "開始執(zhí)行執(zhí)行timer定時任務(wù)...");
        handler.post(new Runnable() {
            @Override
            public void run() {
                getData();

            }
        });
    }
}
 @Override
protected void onDestroy() {
    super.onDestroy();

    if (timer != null) {
        timer.cancel();
        timer = null;
    }
    if (task != null) {
        task.cancel();
        task = null;
    }
}

總結(jié):自己項目中進行網(wǎng)絡(luò)請求的輪詢,判斷押金是否是繳納成功,如果是繳納
成功,我們就進行打印小票,為了避免無限制的打印,定義一個boolean值的變
量,初始值是true,當(dāng)進行打印操作時,我們把其變成false,在輪詢時通過其值

handler.post()是在run()方法中能直接進行跟新ui的,原因是(網(wǎng)址:http://blog.csdn.net/ly502541243/article/details/52062179/
關(guān)鍵的一句話是:直接調(diào)用線程的run()方法相當(dāng)于一個普通的類調(diào)用一個方法,還是在當(dāng)前線程執(zhí)行,并不會創(chuàng)建一個新線程。
進行判斷是否是需要停止輪詢,代碼如下;

if (status.equals("1")) {
        //判斷如果是已經(jīng)打印就不發(fā)送請求
        if (yesOrNoPrinte == false) {
           if (timer != null) {
            timer.cancel();
            timer = null;
         }
              if (task != null) {
              task.cancel();
              task = null;
          }
          }
          if (yesOrNoPrinte) {
            //我們就進行打印,如果是0就不用管,是否打印成員變量變成false
             PrinterRentTicket();
             yesOrNoPrinte = false;
          }
          }

基于長連接的輪詢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,548評論 25 708
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,374評論 11 349
  • 因為覺得自己過往的閱讀量有限,所以逼迫自己在一段時間內(nèi)速讀幾個作家的書,安排了一個閱讀計劃,這個計劃有條不紊地進行...
    恒曉閱讀 1,384評論 1 1
  • 關(guān)于Xcode UI自動化測試的介紹,網(wǎng)上有很多,那我就直接來說一下使用步驟。 一、創(chuàng)建工程,選擇Include...
    ZYiDa閱讀 1,562評論 2 2