难道我学的是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);
    }
}

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

??你以为凭这种东西就可以成为“高压突击小队”的一员吗?不存在的。

。。。

(第一次用漫画的形式,希望知识点不再枯燥)


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