在Espresso Android中获取当前活动 [英] Get Current Activity in Espresso android

查看:248
本文介绍了在Espresso Android中获取当前活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果一项测试涉及多个活动,是否可以获取当前活动?

In case of a test that crosses multiple activities, is there a way to get current activity?

getActivtiy()方法仅给出一项用于启动测试的活动.

getActivtiy() method just gives one activity that was used to start the test.

我尝试了以下类似的方法,

I tried something like below,

public Activity getCurrentActivity() {
    Activity activity = null;
    ActivityManager am = (ActivityManager) this.getActivity().getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    try {
        Class<?> myClass = taskInfo.get(0).topActivity.getClass();
        activity = (Activity) myClass.newInstance();
    }
    catch (Exception e) {

    }
    return activity;
}

但是我得到空对象.

推荐答案

在Espresso中,您可以使用ActivityLifecycleMonitorRegistry,但它不受官方支持,因此在以后的版本中可能无法使用.

In Espresso, you can use ActivityLifecycleMonitorRegistry but it is not officially supported, so it may not work in future versions.

这是它的工作方式:

Activity getCurrentActivity() throws Throwable {
  getInstrumentation().waitForIdleSync();
  final Activity[] activity = new Activity[1];
  runTestOnUiThread(new Runnable() {
    @Override
    public void run() {
      java.util.Collection<Activity> activities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED);
      activity[0] = Iterables.getOnlyElement(activities);
  }});
  return activity[0];
}

这篇关于在Espresso Android中获取当前活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆