如何知道此线程是否为 UI 线程
在Android上,有没有办法知道,如果线程运行我的代码,UI线程是否?在摇摆中,有人告诉我我是否在UI线程上,或者不在UI线程上。Android SDK中是否有任何功能可以让我知道这一点?SwingUtilities.isEventDispatchThread()
在Android上,有没有办法知道,如果线程运行我的代码,UI线程是否?在摇摆中,有人告诉我我是否在UI线程上,或者不在UI线程上。Android SDK中是否有任何功能可以让我知道这一点?SwingUtilities.isEventDispatchThread()
从这里借用的答案:如何检查当前线程是否不是主线程
Looper.myLooper() == Looper.getMainLooper()
任何 Android 应用都只有一个 UI 线程,因此您可以在活动回调中的某个位置(如 onCreate())检查并存储其 ID,然后将其线程的 ID 与存储的 ID 进行比较。
mMainThreadId = Thread.currentThread().getId();
无论如何,你可以省略检查,如果你想在UI线程上做一些事情,并有任何对活动的引用,通过使用
mActivity.runOnUiThread( new Runnable() {
@Override
public void run() {
...
}
});
保证在当前线程上运行,如果它是UI,或者在UI线程中排队。
是的,有办法。对照主 lopper 的线程对象检查当前线程对象。主循环器始终位于 UI 线程中。
boolean isOnUiThread = Thread.currentThread() == Looper.getMainLooper().getThread();