一、什么是Handler?

      Handler是AndroidSDk中处理异步的核心类。它的作用是让子线程通过与UI线程通信来更新UI界面,当我们在线程中处理消息队列后,可以通过Handler对象将消息发出,消息将会按先后完成数据添加到消息队列中,UI线程中的loper不断从消息队列中取消信息刷新UI。

二、什么是Looper和MessageQueue?

    Lopper相当于一个传送带,把物品或消息依次传送给主线程,使用Lopper,可以让线程不停地工作,将普通线程变成循环工作线程。

    MessageQueen相当于一个垃圾桶,储存 子线程发来的消息,让Lopper从中依次取出消息。

    一个线程只会存在一个Lopper和一个MessageQueen.

三、什么是Message?

  Message是一个消息对象,子线将需要传递到UI线程的信息放入Message对象中,Message对象可以通过Handler对象的obtainMessage方法获得。

  Message消息对象的属性有what属性(int类型)、arg1、arg2、(int类型)、obj属性(String类型)

 Handler的应用

四、如何使用Handler?

  Handler一般用来接收Message和发送message

 接收message:

         Handler的应用


或者:Handler的应用   

发送message:

Handler的应用

或者携带内容:

Handler的应用

五、倒计时案列举列(代码、截图)

   Java:

public class DaojishiActivity extends AppCompatActivity {
    private Button daojishiBtn;
    private EditText daojishiET;
    private TextView daojishiTV;
    private  int time;
    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() {
                        for (int i=time;i>0;i--){
                            //更新UI
                            handler.sendEmptyMessage(i);

                           try {
                               Thread.sleep(1000);
                           } catch (InterruptedException e) {
                               e.printStackTrace();
                           }
                        }

                    }
                }).start();
            }
        });
    }

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


    }
}


Xml:

<EditText
    android:id="@+id/daojishi_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<TextView
    android:id="@+id/daojishi_tv"
    android:textSize="20sp"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="倒计时"/>
<Button
    android:id="@+id/daojjishi_btn"
    android:text="开始计时"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

图片:

Handler的应用


相关文章: