首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android上检测UI线程?

如何在Android上检测UI线程?
EN

Stack Overflow用户
提问于 2010-05-17 19:26:08
回答 7查看 31.6K关注 0票数 121

有没有一种健壮的方法来检测Thread.currentThread()是否是应用程序中的安卓系统UI线程?

我想在我的模型代码中添加一些断言,断言只有一个线程(例如UI线程)访问我的状态,以确保不需要任何类型的同步。

EN

回答 7

Stack Overflow用户

发布于 2011-10-26 08:50:36

确定UI线程身份的常见做法是通过Looper#getMainLooper

if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
  // On UI thread.
} else {
  // Not on UI thread.
}

从API23级开始,在主循环中使用新的帮助器方法isCurrentThread,可读性更好一些:

if (Looper.getMainLooper().isCurrentThread()) {
  // On UI thread.
} else {
  // Not on UI thread.
}
票数 204
EN

Stack Overflow用户

发布于 2012-04-07 03:56:31

我认为最好的方法是:

 if (Looper.getMainLooper().equals(Looper.myLooper())) {
     // UI thread
 } else {
     // Non UI thread
 }
票数 44
EN

Stack Overflow用户

发布于 2018-02-12 21:01:33

在API23级,Looper有一个很好的助手方法isCurrentThread。您可以通过这种方式获取mainLooper并查看它是否是当前线程的way:

Looper.getMainLooper().isCurrentThread()

它实际上与以下内容相同:

Looper.getMainLooper().getThread() == Thread.currentThread()

但它的可读性可能更好一些,更容易记忆。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2848575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档