博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中关于线程使用的几点注意事项
阅读量:6516 次
发布时间:2019-06-24

本文共 830 字,大约阅读时间需要 2 分钟。

转自:

我们都知道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为我们提供了这些方法我们就可以很好的解决一些长时间处理的任务了,但是在使用的时候我们还必须注意以下几点:

 

  1. 这些方法或者类必须在在UI线程中创建和调用
  2. 其实这些方法和类最终的实现都是Android的Message、MessageQueue和Looper的机制,所以不要期待你会马上看到结果(效果),因为这是一个Loop一直循环出MessageQueue中的Message执行的过程,如果你没有看到效果,那么等等吧,因为还没有轮到你。
  3. 有线程(多个)的地方就会有并发,会有资源共享冲突,所以在使用的时候谨慎点吧,说不准你的一个线程中使用的变量已经被另一个线程改的面目全非了。。
后语:忙的很久没有写博客了,搭黑写了平时总结的线程的注意事项,demo就不写了,相信大家都会,此外多了解点Android的消息机制对于这个理解比较好的多。。

转载地址:http://jlofo.baihongyu.com/

你可能感兴趣的文章
vc实现非标题栏窗口拖动
查看>>
[BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)
查看>>
tar排除指定目录打包
查看>>
nodejs升级
查看>>
3.4Python数据处理篇之Numpy系列(四)---ndarray 数组的运算
查看>>
openLayers地图缩放的回调
查看>>
Java中的String类的学习
查看>>
机器学习——贝叶斯分类算法详解
查看>>
rockchip的RK3399硬解码总结
查看>>
9.修改列表(3-4,3-5)
查看>>
2018.03.28
查看>>
最短路径
查看>>
(五)Spring Boot之@RestController注解和ConfigurationProperties配置多个属性
查看>>
Linux 小知识翻译 - 「Unix」和「兼容Unix的OS」
查看>>
软件开发过程学习笔记(二)之软件需求模板 分类: 开发过程 ...
查看>>
Xamarin.Android 集成百度地图SDK
查看>>
sqrt函数的实现
查看>>
HDU 3308 LCIS
查看>>
HDU 1176 免费馅饼
查看>>
HDU 4044 GeoDefense
查看>>