HandlerThread應(yīng)用

HandlerThread特點(diǎn):
1,與Thread類似煤杀,畢竟繼承至Thread眷蜈;
2,HandlerThread將loop轉(zhuǎn)到子線程中處理沈自,說白了就是將分擔(dān)MainLooper的工作量酌儒,降低了主線程的壓力,使主界面更流暢枯途。
3忌怎,開啟一個(gè)線程起到多個(gè)線程的作用。處理任務(wù)是串行執(zhí)行酪夷,按消息發(fā)送順序進(jìn)行處理榴啸。HandlerThread本質(zhì)是一個(gè)線程,在線程內(nèi)部晚岭,代碼是串行處理的鸥印。
4,但是由于每一個(gè)任務(wù)都將以隊(duì)列的方式逐個(gè)被執(zhí)行到,一旦隊(duì)列中有某個(gè)任務(wù)執(zhí)行時(shí)間過長辅甥,那么就會(huì)導(dǎo)致后續(xù)的任務(wù)都會(huì)被延遲處理酝润。
5,HandlerThread擁有自己的消息隊(duì)列璃弄,它不會(huì)干擾或阻塞UI線程要销。

6,對(duì)于網(wǎng)絡(luò)IO操作夏块,HandlerThread并不適合疏咐,因?yàn)樗挥幸粋€(gè)線程,還得排隊(duì)一個(gè)一個(gè)等著脐供。

public class MainActivity extends AppCompatActivity {

private String TAG = "MAinActivity";

private TextView tvText;

private Handler mHandler = new Handler();
private boolean is_startCheck = false;
private int START_CHECK = 10001;
private HandlerThread mMainMsgThread;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvText = (TextView) findViewById(R.id.id_textview);

    initBackThread();
}

@Override
protected void onResume() {
    super.onResume();

    is_startCheck = true;

    if (mHandler != null)
        mHandler.sendEmptyMessage(START_CHECK);
}

@Override
protected void onPause() {
    super.onPause();
    is_startCheck = false;
    if (mHandler != null)
        mHandler.removeCallbacksAndMessages(null);
}

private void initBackThread() {

    mMainMsgThread = new HandlerThread("MainActiivity");

    mMainMsgThread.start();

    mHandler = new Handler(mMainMsgThread.getLooper()) {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            checkForUpdate();

            if (is_startCheck) {
                mHandler.sendEmptyMessageDelayed(START_CHECK, 1000);
            }
        }
    };

}


// 模擬從服務(wù)器解析數(shù)據(jù)
private void checkForUpdate() {
    try {
        //模擬耗時(shí)
        Thread.sleep(1000);
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                String result = "當(dāng)前幸運(yùn)指數(shù):<font color='red'>%d</font>";
                result = String.format(result, (int) (Math.random() * 3000 + 1000));

                final String finalResult = result;
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tvText.setText(Html.fromHtml(finalResult));
                    }
                });

            }
        });

    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //釋放資源
    mMainMsgThread.quit();

    Log.e(TAG, " ---onDestroy()--- ");
}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浑塞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子政己,更是在濱河造成了極大的恐慌酌壕,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歇由,死亡現(xiàn)場離奇詭異卵牍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沦泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門糊昙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谢谦,你說我怎么就攤上這事释牺。” “怎么了回挽?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵没咙,是天一觀的道長。 經(jīng)常有香客問我厅各,道長镜撩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任队塘,我火速辦了婚禮袁梗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憔古。我一直安慰自己遮怜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布鸿市。 她就那樣靜靜地躺著锯梁,像睡著了一般即碗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陌凳,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天剥懒,我揣著相機(jī)與錄音,去河邊找鬼合敦。 笑死初橘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的充岛。 我是一名探鬼主播保檐,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崔梗!你這毒婦竟也來了夜只?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤蒜魄,失蹤者是張志新(化名)和其女友劉穎扔亥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體权悟,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砸王,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峦阁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡偷溺,死狀恐怖瓮具,靈堂內(nèi)的尸體忽然破棺而出聘殖,到底是詐尸還是另有隱情,我是刑警寧澤撒会,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站师妙,受9級(jí)特大地震影響诵肛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜默穴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一怔檩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓄诽,春花似錦薛训、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闸英。三九已至,卻和暖如春介袜,著一層夾襖步出監(jiān)牢的瞬間甫何,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工遇伞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沛豌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓赃额,卻偏偏與公主長得像加派,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跳芳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 從哪說起呢芍锦? 單純講多線程編程真的不知道從哪下嘴。飞盆。 不如我直接引用一個(gè)最簡單的問題娄琉,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,740評(píng)論 1 17
  • 背景 擔(dān)心了兩周的我終于輪到去醫(yī)院做胃鏡檢查了!去的時(shí)候我都想好了最壞的可能(胃癌)吓歇,之前在網(wǎng)上查的癥狀都很相似孽水。...
    Dely閱讀 9,229評(píng)論 21 42
  • Android中的線程 線程,在Android中是非常重要的城看,主線程處理UI界面女气,子線程處理耗時(shí)操作。如果在主線程...
    shenhuniurou閱讀 753評(píng)論 0 3
  • 參考Android線程的正確使用姿勢Android性能優(yōu)化典范之多線程篇 Android多線程編程的總結(jié)Andro...
    合肥黑閱讀 564評(píng)論 1 2
  • 本交是為了我偶像寫的测柠,希望有人喜歡
    靈若兮之閱讀 183評(píng)論 0 0