关于Handler机制,网上的文章很多,这里主要谈一下我的理解。
我对一项技术的理解,一般都会思考一个问题,就是这项技术到底帮我们解决了一个什么问题?思考这个问题的好处是,你能很好的理解这项技术的使用场景,也就是你知道在遇到什么样的问题的时候可以用这项技术去帮我们解决,毕竟技术就是为了帮我们解决某个问题而存在的。
那么
- Handler机制到底帮我们解决了一个什么问题?
在一个线程中可以通知另一个线程去做一件事
- 使用场景是什么?
有一件事是由工作线程发起的,但是必须在另一个线程中去做
- 有两个条件:
条件1:发起者是工作线程
条件2.执行者必须是别的线程
- 最典型的例子:android中更新UI
条件1:发起者是工作线程
如果不是由工作线程发起,而是由UI线程发起,就没必要那么麻烦用Handler机制了,直接做操作就行了。但是实际场景是,有些情况必须是由工作线程来发起的,比如我要下载图片然后更新一个ImageView。首先下载的逻辑只能是子线程,所以下载完了以后需要更新ImageView的发起者也是子线程。
条件2.执行者必须是别的线程
如果工作线程能做的话,就没必要通过Handler机制通知UI线程来做了,多此一举,但是现实情况是,这件事工作线程自己做不了,只能由UI线程来做。
由于这种典型场景的存在,所以android 给我们提供了Handler机制来帮助我们解决这种场景的问题。
所以Handler机制就是为我们解决了一个问题
在一个线程中可以通知另一个线程去做一件事
- Handler机制的灵活使用
明白了Handler机制的作用之后,我们就可以灵活的使用了,当遇到一个线程需要通知另一个线程去做一件事的时候,我们自然而然就想到了可以使用Handler机制,这里不限于子线程去通知UI线程去做一件事,UI线程也可以通知子线程去做一件事,任意一个线程都可以通知另一个线程去做一件事。