4

这里的任何人都知道如何编写测试(或者理想情况下有一个示例)来检查是否在 UI 线程上调用了方法?

4

2 回答 2

4

答案来自以下链接:

如何检查当前线程是否不是主线程

如何知道这个线程是否是 UI 线程

1)Looper.myLooper() == Looper.getMainLooper()

2) Android 应用程序只有一个 UI 线程,因此您可以在 Activity 回调中的某处,如 onCreate() 检查并存储其 ID,然后将该线程的 ID 与存储的 ID 进行比较。

 mMainThreadId = Thread.currentThread().getId();

3)如果您想在 UI 线程上做某事并通过使用对 Activity 有任何引用

mActivity.runOnUiThread( new Runnable() {
    @Override 
    public void run() {
    ...
    }
});

希望能帮助到你

于 2013-09-02T11:17:41.920 回答
3

UI线程总是id = 1,所以你可以尝试检查:

if(Thread.currentThread().getId() == 1) {
///...
}
于 2013-09-02T11:17:21.800 回答