我们都知道Android是单线程模型,这意味着Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行,所以你单纯的new一个Thrad并且start()不行的,因为这违背了Android的单线程模型。
很幸运的是Android为我们提供了在其他线程中访问UI线程的方法,相信大家都见过,这几个就是Activity的runOnUiThread方法,View的post和postDelayed方法,以及最常用的Hanlder和AsyncTask,这里我推荐使用Hanlder和AsyncTask,尤其是AsyncTask,因为使用他们你会发现你的代码很容易被理解,因为他们都有一些具有特定职责的方法,尤其是AsyncTask,有预处理的方法onPreExecute,有后台执行任务的方法doInBackground,有更新进度的方法publishProgress,有返回结果的方法onPostExecute等等,这就不像post这些方法,把所有的操作都一大坨的写在一个Runnable里。
有了Android为我们提供了这些方法我们就可以很好的解决一些长时间处理的任务了,但是在使用的时候我们还必须注意以下几点:
-
这些方法或者类必须在在UI线程中创建和调用
-
其实这些方法和类最终的实现都是Android的Message、MessageQueue和Looper的机制,所以不要期待你会马上看到结果(效果),因为这是一个Loop一直循环出MessageQueue中的Message执行的过程,如果你没有看到效果,那么等等吧,因为还没有轮到你。
-
有线程(多个)的地方就会有并发,会有资源共享冲突,所以在使用的时候谨慎点吧,说不准你的一个线程中使用的变量已经被另一个线程改的面目全非了。。
-
分享到:
相关推荐
在多线程编程这块,我们经常要使用Handler(处理),Thread(线程)和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢? 首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而...
总结C++中多线程要注意的事项,不能跨线程调用MFC对象等等
多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项 多线程调用DBUS服务注意事项
Android线程结束——合理的结束你想结束的线程
Handler在子线程中的使用以及注意事项
Android中多线程下载原理实现案例...
Android开发中的多线程编程技术资源包 TAG:Android 多线程 应用开发 Alfred整理发布,版权所有!
android SurfaceView添加线程源码
android多线程机制教程 android多线程机制 android多线程机制 android多线程机制
MFC多线程编程注意事项,很不错的资料。
Android异步线程使用Demo 异步线程AsyncTask使用方法
Android studio 多线程下载,Android studio 多线程下载
Android系列课程第二季:多线程使用方法和高级技巧——深入理解 快速掌握Android开发技术、快速提高,全面掌握Android技术体系,同时对Android中常用的技术以及重点难点能够深入理解、熟练运用。
如何使用线程,线程池,ThreadHandler等等
Android----线程实现图片移动 , 运用线程实现图片的水平循环往返移动!
Android中多线程的Handler的工作原理,其中涉及到MessageQueue和Looper。详情可以参见博客:http://www.cnblogs.com/plokmju/p/android_Looper.html
Delphi XE5例子中的一个Android线程使用的代码AnonymousThread
一个线程控制View的代码实例,其中主要使用了两种方式:Post方式和Handler方式。
Android开发中,使用线程应该注意的问题
android多线程管理,实现多线程