Android消息处理机制:Handle

来源:互联网 发布:时时彩数据 编辑:程序博客网 时间:2024/06/05 05:42

今天我们来讲讲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 1
原创粉丝点击