转载请注明本文出自 clevergump 的博客:http://blog.csdn.net/clevergump/article/details/50995612, 谢谢!

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();}

以上几种写法都可以.

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. BAT大咖助力 全面升级Android面试-3android基础相关面试题
  3. Android(安卓)Thread子线程和主线程的UI交互
  4. Android6.0来电流程
  5. Android(安卓)N代码分析:requestLayout
  6. JavaScriptCore与iOS和Android交互
  7. 2018最新 Android(安卓)面试题总结(二)
  8. android部分控件应用解析
  9. android中正确保存view的状态

随机推荐

  1. httpClient及android 原生接口实现下载并
  2. android的窗口机制分析------UI管理系统
  3. android多屏设计、适配(来自官网)
  4. IDEA/Android(安卓)Studio报Ambiguous me
  5. 调用手机的摄像头,并且返回照片显示在程
  6. Android样式开发之selector
  7. windows环境下获取安卓应用的MD5签名,SHA1
  8. Cocos2d-x +Android(安卓)+ Windows 7环
  9. Android(安卓)关于位图的操作
  10. 安卓ListView 数据分批加载