Espresso不应该等待异步任务完成。如何?

时间:2016-11-22 14:37:01

标签: android multithreading android-asynctask android-espresso

我有一个Android应用程序,其中点击活动A开始一个帖子。我需要这个线程运行一段时间(2-3分钟),但我也可以在此期间导航到其他片段和活动。

手动应用程序没有任何问题。但是我用espresso自动化测试。我正在尝试执行Thread启动的过程(不会很快死掉),但我通过espresso的模拟点击导航到其他活动。我总是得到espresso正在等待的错误,ASYNC_TASK没有空闲。

我需要浓缩咖啡来过度查看并导航到其他屏幕。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:-1)

您可以使用IntentService,您可以在其中执行繁重的工作,并且一切都将在后台,而不仅仅是让UI线程自由,而且您可以在活动之间移动,只要你想要的。

这是一个示例代码a full example is avaiable as well

public class HeavyJobExecutor extends IntentService {


    public HeavyJobExecutor() {
        super("WhateverNameYouWant");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        for (int i = 0 ;i < 100; i ++) {
            try {
                new URL("http://stackoverflow.com").openConnection();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

您可能还需要阅读BroadcastReceiver,因为您可以使用它们来检查您的意向服务的状态。