Android 如何判断当前线程是否是主线程
2016-03-28 09:49
639 查看
转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/50995612, 谢谢!
Android开发中, 有时需要判断当前线程到底是主线程, 还是子线程, 例如: 我们在自定义View时, 想要让View重绘, 需要先判断当前线程到底是不是主线程, 然后根据判断结果来决定到底是调用
那么, 我们如何判断当前线程到底是主线程, 还是子线程呢? 答案是: 可以借助于
或者
或者
以上几种写法都可以.
Android开发中, 有时需要判断当前线程到底是主线程, 还是子线程, 例如: 我们在自定义View时, 想要让View重绘, 需要先判断当前线程到底是不是主线程, 然后根据判断结果来决定到底是调用
invalidate()还是
postInvalidate()方法. 如果当前是主线程, 就调用
invalidate()方法; 而如果当前是子线程, 就调用
postInvalidate()方法, 注意: 子线程中不能调用
invalidate()方法, 否则就会报异常, 提示我们不能在子线程中更新UI, 如下图所示:
那么, 我们如何判断当前线程到底是主线程, 还是子线程呢? 答案是: 可以借助于
Looper. 代码如下:
public boolean isMainThread() { return Looper.getMainLooper() == Looper.myLooper(); }
或者
public boolean isMainThread() { return Looper.getMainLooper().getThread() == Thread.currentThread(); }
或者
public boolean isMainThread() { return Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId(); }
以上几种写法都可以.
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories