您的位置:首页 > 移动开发 > Android开发

Android 如何判断当前线程是否是主线程

2016-03-28 09:49 639 查看
转载请注明本文出自 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();
}


以上几种写法都可以.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android