一.什么是handler
handler机制放松消息让主线程(UI线程)更新ui界面
handler通过发送和处理Message和Runnnable对象来关联相对应线程MessageQueue.
1.可以让对应的Message和Runnable在未来的某个是时间点进行相应处理,
2.让自己想要处理的好使操作放在子线程,更新UI的操作放在主线程。
二.handler的使用方法
1.post(runnable)
2.sendMessage(message)
三.handler机制的原理
四.handler引起的内存泄露以及解决办法
原因:静态内部类持有外部类的匿名引用,导致外部activity无法释放
解决办法:handler内部持有外部activity的弱引用,并把handler改为静态内部列,mHandler.removeCallback().
AsyncTask
一.什么是AsyncTask
它本质上就是一个封装了线程池和handler的异步框架
二.AsyncTask的使用方法
1.3个参数
2.5个方法
三.AsyncTask的机制原理
1.AsyncTask的本质是一个静态的线程池,AsyncTask派生出的子类可以实现不同的异步任务,这些任务都是提交到静态的线程池中执行。
2.线程池中的工作线程执行doinBackground(mParamx)方法执行异步任务
3.当任务状态改变之后,工作线程会想UI线程发送消息,AsyncTask内部的InternalHandler相应这些消息,并调用相关的回调函数。