難道我學的是Hander?(多圖預警哦)


等等,我想起來了。今天是學習了Hander

那什麼是Hander

你不會百度啊...算了    Handler:是一個消息分發對象,進行發送和處理消息,並且其 Runnable 對象與一個線程的 MessageQueue 關聯。 

作用:調度消息,將一個任務切換到某個指定的線程中去執行。

那什麼是Looper和MessageQueue?

我記得是路xx和潘xx來着,一個人傳遞,一個是開關什麼的(來自老師的一次同學舉例)

想死嗎?

有消息循環的線程一般都會有一個Looper,只要有Looper,就可以往消息隊列裏面添加東西,並做相應的處理。

一個MessageQueue需要一個Looper。

那我問你,什麼是Mess.......(突然被打斷)

我還沒說完呢,MessageQueue是消息隊列,用來存放Handler發送過來的消息。我還是繼續說完怎麼用Hander吧————————前方大量文字————-

  • 創建一個工作線程,繼承 Thread,重新 run 方法,處理耗時操作
  • 創建一個 Message 對象,設置 what 標誌及數據
  • 通過 sendMessage 進行投遞消息
  • 創建一個handler,重寫 handleMessage 方法,根據 msg.what 信息判斷,接收對應的信息,再在這裏更新 UI。

    private Handler handler = new Handler(){

  • @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what) {      //判斷標誌位
            case 1:
                /**
                  獲取數據,更新UI
                 */
                break;
        }
     }

    };

    public class WorkThread extends Thread {

    @Override

public void run() {
   super.run();
/**
  耗時操作
 */

我一看你就是抄襲的,那我考考你,用Hander做倒計時10秒的案例,我要代碼和效果圖!!!

哦,那我就給你表演一下如何畫出一個自然的手部_____哦,不,是我案例舉例


這是一個界面的效果,這裏少截取了vertical。
package com.example.lenovo.handlerdemo;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class DaojishiActivity extends AppCompatActivity {
    private Button daojishiBtn;
    private EditText daojishiET;
    private int time;
    private TextView daojishiTV;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            daojishiTV.setText(msg.what+"");
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_daojishi);
        bindID();
        daojishiBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 time = Integer.parseInt(daojishiET.getText().toString());
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Message message = handler.obtainMessage();
                        for (int i=time;i>0;i--){
                            //Message message = handler.obtainMessage();
                           // message.what = time;
                           // handler.sendMessage(message);
                            handler.sendEmptyMessage(i);
                            try{
                                Thread.sleep(1000);
                            }catch (InterruptedException e){
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
            }
        });

    }


    private void bindID() {
        daojishiBtn = findViewById(R.id.daojishi_btn);
        daojishiET = findViewById(R.id.daojishi_et);
        daojishiTV = findViewById(R.id.daojishi_tv);
    }
}

拿去全拿去,都是自己手打出來的。

??你以爲憑這種東西就可以成爲“高壓突擊小隊”的一員嗎?不存在的。

。。。

(第一次用漫畫的形式,希望知識點不再枯燥)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章