1 概述

在开发Android 应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。

如果在新开的线程中需要对UI进行设定,就可能违反单线程模型,因此android采用一种复杂的Message Queue机制保证线程间通信

Android是单线程模型,意味着android ui操作并水是线程安全的,并且这些操作必须在UI线程中执行,所以你单纯的new一个thread是不行的,因为这违背了android的单线程模型,怎样用好多线程呢

原则 : 所有可能耗时的操作都放在其它线程去处理。

2 Android几种多线程的实现方式(四种)

A 、Activity.runOnUiThread(Runnable)  
B、View.post(Runnable) ;View.postDelay(Runnable , long)  
C、Handler  
D、AsyncTask 

AsyncTask是Android框架提供的异步处理的辅助类,它可以实现耗时操作在其他线程执行,而处理结果在Main线程执行,对于开发 者而言,它屏蔽掉了多线程和后面要讲的Handler的概念。你不了解怎么处理线程间通讯也没有关系,AsyncTask体贴的帮你做好了。使用他你会发 现你的代码很容易被理解,因为他们都有一些具有特定职责的方法,尤其是AsyncTask,有预处理的方法onPreExecute,有后台执行任务的方 法doInBackground,有更新进度的方法publishProgress,有返回结果的方法onPostExecute等等,这就不像post 这些方法,把所有的操作都写在一个Runnable里。不过封装越好越高级的API,对初级程序员反而越不利,就是你不了解它的原理。当你需要面对更加复 杂的情况,而高级API无法完成得很好时,你就杯具了。所以,我们也要掌握功能更强大,更自由的与Main线程通讯的方法:Handler的使用。

3 总结

A 、Android系统是单线程系统,为了实现多线程的效果,采用message queue

B、 为了实现多线程,可采用runOnUiThread, handler , AsyncTask , post 技术实现