Handler相关

原理:

Handler 、 Looper 、Message 这三个是Android异步消息处理线程相关的概念。异步消息处理线程启动后会进入一个无限的循环体之中,每次循环,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数,执行完成一个消息后则继续循环。若消息队列为空,线程则会阻塞等待。

Looper创建一个MessageQueue,然后进入一个无限循环体不断从该MessageQueue中读取消息,而消息的创建者就是一个或多个Handler 。

使用:

private Handler mHandler = newHandler()

{

          public void handleMessage(android.os.Message msg)

          {

                        switch(msg.what)

                {

                     case value:

                     break;

                     default:

                     break;

                }

          };

};

mHandler.sendMessage();


2,

private Handler mHandler =new Handler();

mHandler.post(newRunnable()

{

   @Override

   public void run()

   {

      Log.e("TAG", Thread.currentThread().getName());

       mtv.setText("test");

   }

});


注意:

1, 避免内存泄漏

a) 内部类隐式包含外部类的引用

解决方法:

1,改为静态内部类。

2,或者手动管理线程及时结束以释放对象

b) 结果执行体中包含有View类,View会持有外部Context。

解决方法:

使用弱连接

2, Handler事实上提供了一个异步线程处理但方案,可以放在其他地方使用


参考:

https://my.oschina.net/rengwuxian/blog/181449

http://blog.csdn.net/feelang/article/details/39059705

你可能感兴趣的:(Handler相关)