【发布时间】:2010-12-23 04:09:26
【问题描述】:
如何知道正在运行的代码是否在主线程(UI线程)上执行?
对于 Swing,我使用 isEventDispatchThread 方法...
【问题讨论】:
-
这个问题怎么重复?
如何知道正在运行的代码是否在主线程(UI线程)上执行?
对于 Swing,我使用 isEventDispatchThread 方法...
【问题讨论】:
使用 Looper.getMainLooper().getThread() 来获取 UI 线程。您可以使用以下表达式检查它是否是当前线程:
Looper.getMainLooper().getThread() == Thread.currentThread()
【讨论】:
它是 UI 线程,如果:
Looper.myLooper() == Looper.getMainLooper()
源 AOSP 源代码:ManagedEGLContext.java#L100、SharedPreferencesImpl.java#L470、Instrumentation.java#L1650and so on。
【讨论】:
getThread() 很整洁。
如果你想知道你是否在主线程中,你可以试试:
Context c = **Get a Context**;
Thread.currentThread() == c.getMainLooper().getThread();
当然,我可能是错的,这可能会让你的应用彻底崩溃。
【讨论】: