检查是否在带有robolectric的UI-Thread上调用了一个方法

时间:2013-09-02 11:12:55

标签: android junit robolectric

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

2 个答案:

答案 0 :(得分:4)

从以下链接提及的答案:

How to check if current thread is not main thread

How to know if this thread is a UI Thread

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() {
    ...
    }
});

希望有所帮助

答案 1 :(得分:3)

UI线程始终具有id = 1,因此您可以尝试检查:

if(Thread.currentThread().getId() == 1) {
///...
}