我们都知道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执行的过程,如果你没有看到效果,那么等等吧,因为还没有轮到你。
有线程(多个)的地方就会有并发,会有资源共享冲突,所以在使用的时候谨慎点吧,说不准你的一个线程中使用的变量已经被另一个线程改的面目全非了。。

后语:忙的很久没有写博客了,搭黑写了平时总结的线程的注意事项,demo就不写了,相信大家都会,此外多了解点Android的消息机制对于这个理解比较好的多。。

更多相关文章

  1. Android的线程
  2. android 那些事---主线程是线程不安全的
  3. Android VideoView设置静音,Android 设置VideoView静音,Android
  4. ListView去掉分割线的几种方法
  5. SDK Platform Tools component is missing! Please use the SDK
  6. Android SQLite数据库操作实例
  7. android中炫酷划屏事件及sqlite全部操作Demo(1)
  8. Android Market google play store帐号注册方法流程 及发布应用
  9. Android中SQLite操作示例

随机推荐

  1. android:TextAppearance.Material.Widget
  2. Android(安卓)Weak Handler:可以避免内存
  3. Android自定义样式
  4. android情景模式切换的实现
  5. Android的BUG(三) - 广为人知的诟病:频繁重
  6. eclipse android基础开发
  7. android gps开发必备资料(含测试demo下载
  8. Android Room联合AsyncListUtil实现Recyc
  9. android layout parser
  10. 在Android平台上开发移动应用程序(毕业设