Android利用Handler更新主线程UI

在Android中利用Handler的原理主要是用来根据接收的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。

1.Handler在类中的写法:

private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch(msg.what) {
            case 1:
              //do something in main UI Thread
            Bundle bundle = msg.getData();
            break;
        }
    }
};

2.在类中子线程调用Handler:

...

Message msg = new Message();

Bundle bundle = new Bundle();

msg.setData(bundle);

msg.what=1;

handler.sendMessage(msg);

...

3.使用Handler避免内存溢出的方法:移除所有的消息和回调,简单一句话就是清空了消息队列。注意,不要以为你post的是个Runnable或者只是sendEmptyMessage。你可以看一下源码,在handler里面都是会把这些转成正统的Message,放入消息队列里面,所以清空队列就意味着这个Handler直接被打成原型了,当然也就可以回收了。所以在外面的Activity或者Fragment中的关闭方法中,如onDestroy中调用一下handler.removeCallbacksAndMessages(null);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容