Android消息处理机制:Handle

今天我们来讲讲Android的处理机制Handle,跟之前一样,只入门,不深入。

Handle能做些什么呢?

1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器。

2)线程间通信。在Android的应用启动时,会 创建一个主线程,主线程会创建一个消息队列来处理各种消息。

下面我们用更新ui线程的案例来讲述Handle的用法

首先要新建一个Handle并实现handleMessage方法

贴代码

public class MainActivity extends AppCompatActivity {

    private Button button;
    private ProgressBar progressBar;


    private Handler handler=new Handler(){

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //根据message中的what值来判断是那个线程发过来的消息
            switch (msg.what){
                case 1:
                    //对progressbar进行更新,效果直接显示在ui上
                    progressBar.setProgress(msg.arg1);

                    break;
                case 2:
                    break;
            }
        }


    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)this.findViewById(R.id.handle);
        progressBar = (ProgressBar)this.findViewById(R.id.progressbar);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
                //创建一个线程,并在线程中发送消息给handle,然后统一由handle进行处理
                new Thread(new Runnable() {
                    @Override
                    public void run() {

                        for(int j=1;j<=100;j++) {
                            /*
                            创建Message,Message中有三个参数
                            what:用来表示消息的标识
                            arg1:用来传参数
                            arg2:用来传参数
                             */
                            Message msg = new Message();
                           
                            msg.what=1;
                            msg.arg1 = j;
                            try {
                                Thread.sleep(1000);
                                
                                handler.sendMessage(msg);//把Message发送给Handle
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }


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

    }
}
初学入门者,就到这里啦,关于这个机制中 的角色,大家可以稍微了解一下,主要有四大角色:

Message:消息队列,用来存放线程放入的消息

Handle:用来接收和发送Message(消息)

Loop:接收Handle中发送的消息,并处理

线程:各种线程

整个机制的运行机制是:


由线程通过 sendHandle() 将线程中创建的Message发送给Handle,Handle接收到各种线程发送来的消息进行统一处理,由Handle统一处理。

Handle将消息发送给Message Queue,进行处理。


基本的就到这里啦。想更深入我这地小,哈哈,晚安!

鄙人小小白,多多光照!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值