如何检查在Android的UI线程上运行?
我怎么知道运行的代码是否在主线程(UI线程)上执行? 
 使用Swing我使用isEventDispatchThread方法… 
 看起来不像SDK中有一个方法。 该检查位于ViewRoot类中,并通过将Thread.currentThread()与在构造函数中分配但从未公开的类成员进行比较来完成。 
如果你真的需要这个检查你有几个选项来实现它:
- 捕获android.view.ViewRoot $ CalledFromWrongThreadException
 -   
post一个Runnable到视图并检查Thread.currentThread() -  使用
Handler来做同样的事情 
一般来说,我认为不是检查你是否在正确的线程上,而是应该确保代码总是在UI线程上执行(使用2或3)。
使用Looper.getMainLooper()。getThread()来获取UI线程。 您可以使用以下expression式检查它是否是当前线程:
 Looper.getMainLooper().getThread() == Thread.currentThread() 
这是UI线程,如果:
 Looper.myLooper() == Looper.getMainLooper() 
 源代码AOSP源代码: ManagedEGLContext.java#L100 , SharedPreferencesImpl.java#L470 , Instrumentation.java#L1650 等等 。 
你也可以使用runOnUiThread ,它只需要一个将在ui线程中运行的runnable
如果你想知道你是否在主线程,你可以尝试:
 Context c = **Get a Context**; Thread.currentThread() == c.getMainLooper().getThread(); 
当然,我可能是错的,这可能会完全打击你的应用程序。