Android线程

Android中启动线程的方法:

1. 直接调用线程的start方法,真正的启动一个线程
2. 利用Handler的post方法,调用一个Runnable的run方法

可见第二种方法并未真正的启动一个线程。
问题就来了:
1,Android中第二种方法的意义是什么?
2,在onCreate方法中,进行耗时操作时(例如从网络下载数据),通常是启动一个线程来完成,避免主线程的阻塞。那么使用post方法,是否能够达到同样的目的。


一般的Handler确实没有启动一个线程。除非用handlerThread才可以,并且handlerThread要先start,再将它的looper传给handler。

问题1:
其实handler的可以说提供了一个线程间通信的很好的方法。
问题2 :
用post,在没用handlerThread的情况下,handler就是使用的实例化它的那个线程的资源,这里就是UI线程,也就是肯定会把UI阻了

handler是android系统中,子线程和UI线程通讯的传递员,最终handler中的handMessage方法是UI线程来调用的,也就意味着,在重写handMessage方法里,不要将耗时的操作放在这个方法里,因为这个方法,只是主现在用来更新UI的。

你可能感兴趣的:(android)