android.app.Instrumentation#ActivityMonitor ( )源码实例Demo

下面列出了android.app.Instrumentation#ActivityMonitor ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android-browser-helper   文件: TestUtil.java
/**
 * Waits until {@link TestBrowser} is launched and resumed, and returns it.
 *
 * @param launchRunnable Runnable that should start the activity.
 */
public static TestBrowser getBrowserActivityWhenLaunched(Runnable launchRunnable) {
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    Instrumentation.ActivityMonitor monitor
            = instrumentation.addMonitor(TestBrowser.class.getName(), null, false);

    launchRunnable.run();
    TestBrowser activity =
            (TestBrowser) instrumentation.waitForMonitorWithTimeout(monitor, 3000);
    assertNotNull("TestBrowser wasn't launched", activity);

    // ActivityMonitor is triggered in onCreate and in onResume, which can lead to races when
    // launching several activity instances. So wait for onResume before returning.
    boolean resumed = activity.waitForResume(3000);
    assertTrue("TestBrowser didn't reach onResume", resumed);
    return activity;
}
 
源代码2 项目: android_9.0.0_r45   文件: ProcessOwnerTest.java
@Test
public void testNavigation() throws Throwable {
    FragmentActivity firstActivity = setupObserverOnResume();
    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(
            NavigationTestActivitySecond.class.getCanonicalName(), null, false);
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    instrumentation.addMonitor(monitor);

    Intent intent = new Intent(firstActivity, NavigationTestActivitySecond.class);
    firstActivity.finish();
    firstActivity.startActivity(intent);

    FragmentActivity secondActivity = (FragmentActivity) monitor.waitForActivity();
    assertThat("Failed to navigate", secondActivity, notNullValue());
    checkProcessObserverSilent(secondActivity);
}
 
void waitForOverlay(long millis) {
    if (!testSystemLayer()) {
        Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(MainActivity.class.getCanonicalName(),
                null, false);
        getInstrumentation().addMonitor(monitor);
        getActivityRule().launchActivity(new Intent(getApplication(), MainActivity.class));
        try {
            monitor.waitForActivityWithTimeout(5000);
        } finally {
            getInstrumentation().removeMonitor(monitor);
        }
    }
    try {
        Thread.currentThread().sleep(millis);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
 
源代码4 项目: custom-tabs-client   文件: TestUtil.java
/**
 * Waits until {@link TestBrowser} is launched and resumed, and returns it.
 *
 * @param launchRunnable Runnable that should start the activity.
 */
public static TestBrowser getBrowserActivityWhenLaunched(Runnable launchRunnable) {
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    Instrumentation.ActivityMonitor monitor
            = instrumentation.addMonitor(TestBrowser.class.getName(), null, false);

    launchRunnable.run();
    TestBrowser activity =
            (TestBrowser) instrumentation.waitForMonitorWithTimeout(monitor, 3000);
    assertNotNull("TestBrowser wasn't launched", activity);

    // ActivityMonitor is triggered in onCreate and in onResume, which can lead to races when
    // launching several activity instances. So wait for onResume before returning.
    boolean resumed = activity.waitForResume(3000);
    assertTrue("TestBrowser didn't reach onResume", resumed);
    return activity;
}
 
public void testLaunchAboutActivity() {
    Instrumentation.ActivityMonitor monitorAbout = new Instrumentation.ActivityMonitor(AboutActivity.class.getCanonicalName(), null, false);
    getInstrumentation().addMonitor(monitorAbout);

    mainActivity = launchActivity("com.simplealertdialog.sample.demos", MainActivity.class, null);
    getInstrumentation().waitForIdleSync();

    mainActivity.openOptionsMenu();
    getInstrumentation().waitForIdleSync();

    getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    getInstrumentation().waitForIdleSync();

    getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);
    getInstrumentation().waitForIdleSync();

    AboutActivity aboutActivity = (AboutActivity) getInstrumentation().waitForMonitorWithTimeout(monitorAbout, 3000);
    assertNotNull(aboutActivity);
    assertTrue(getInstrumentation().checkMonitorHit(monitorAbout, 1));

    aboutActivity.finish();
}
 
源代码6 项目: android_9.0.0_r45   文件: ProcessOwnerTest.java
@Test
public void testNavigationToNonSupport() throws Throwable {
    FragmentActivity firstActivity = setupObserverOnResume();
    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(
            NonSupportActivity.class.getCanonicalName(), null, false);
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    instrumentation.addMonitor(monitor);

    Intent intent = new Intent(firstActivity, NonSupportActivity.class);
    firstActivity.finish();
    firstActivity.startActivity(intent);
    NonSupportActivity secondActivity = (NonSupportActivity) monitor.waitForActivity();
    assertThat("Failed to navigate", secondActivity, notNullValue());
    checkProcessObserverSilent(secondActivity);
}
 
源代码7 项目: android_9.0.0_r45   文件: ProcessOwnerTest.java
@Test
public void testPressHomeButton() throws Throwable {
    setupObserverOnResume();

    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(
            NavigationDialogActivity.class.getCanonicalName(), null, false);
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    instrumentation.addMonitor(monitor);

    NavigationTestActivityFirst activity = activityTestRule.getActivity();
    activity.startActivity(new Intent(activity, NavigationDialogActivity.class));
    FragmentActivity dialogActivity = (FragmentActivity) monitor.waitForActivity();
    checkProcessObserverSilent(dialogActivity);

    List<Event> events = Collections.synchronizedList(new ArrayList<>());

    LifecycleObserver collectingObserver = new LifecycleObserver() {
        @OnLifecycleEvent(Event.ON_ANY)
        public void onStateChanged(@SuppressWarnings("unused") LifecycleOwner provider,
                Event event) {
            events.add(event);
        }
    };
    addProcessObserver(collectingObserver);
    events.clear();
    assertThat(activity.moveTaskToBack(true), is(true));
    Thread.sleep(ProcessLifecycleOwner.TIMEOUT_MS * 2);
    assertThat(events.toArray(), is(new Event[]{ON_PAUSE, ON_STOP}));
    events.clear();
    Context context = InstrumentationRegistry.getContext();
    context.startActivity(new Intent(activity, NavigationDialogActivity.class)
            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
    waitTillResumed(dialogActivity, activityTestRule);
    assertThat(events.toArray(), is(new Event[]{ON_START, ON_RESUME}));
    removeProcessObserver(collectingObserver);
    dialogActivity.finish();
}
 
源代码8 项目: gdk-apidemo-sample   文件: ApiDemoActivityTest.java
@Override
protected void setUp() throws Exception {
    super.setUp();
    mCardsActivityMonitor = new Instrumentation.ActivityMonitor(
        CardsActivity.class.getName(), null, false);
    mDetectorActivityMonitor = new Instrumentation.ActivityMonitor(
        SelectGestureDemoActivity.class.getName(), null, false);
    mThemingActivityMonitor = new Instrumentation.ActivityMonitor(
        ThemingActivity.class.getName(), null, false);
    getInstrumentation().addMonitor(mCardsActivityMonitor);
    getInstrumentation().addMonitor(mDetectorActivityMonitor);
    getInstrumentation().addMonitor(mThemingActivityMonitor);
}
 
源代码9 项目: android_9.0.0_r45   文件: ViewModelTest.java
private ViewModelActivity recreateActivity() throws Throwable {
    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(
            ViewModelActivity.class.getCanonicalName(), null, false);
    Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
    instrumentation.addMonitor(monitor);
    final ViewModelActivity previous = mActivityRule.getActivity();
    mActivityRule.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            previous.recreate();
        }
    });
    ViewModelActivity result;

    // this guarantee that we will reinstall monitor between notifications about onDestroy
    // and onCreate
    //noinspection SynchronizationOnLocalVariableOrMethodParameter
    synchronized (monitor) {
        do {
            // the documentation says "Block until an Activity is created
            // that matches this monitor." This statement is true, but there are some other
            // true statements like: "Block until an Activity is destroyed" or
            // "Block until an Activity is resumed"...

            // this call will release synchronization monitor's monitor
            result = (ViewModelActivity) monitor.waitForActivityWithTimeout(4000);
            if (result == null) {
                throw new RuntimeException("Timeout. Failed to recreate an activity");
            }
        } while (result == previous);
    }
    return result;
}
 
@Test
public void startSecondActivity() {
    getInstrumentation().runOnMainSync(new Runnable() {
        @Override
        public void run() {
            debugOverlay = new DebugOverlay.Builder(getApplication())
                    .allowSystemLayer(testSystemLayer())
                    .build();
            debugOverlay.install();
        }
    });

    waitForOverlay();

    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(ScrollingActivity.class.getCanonicalName(),
            null, false);
    getInstrumentation().addMonitor(monitor);
    try {
        onView(withId(com.ms_square.debugoverlay.sample.R.id.fab)).perform(click());
        Activity nextActivity = monitor.waitForActivityWithTimeout(5000);
        assertThat(nextActivity, Matchers.is(Matchers.notNullValue()));

        takeActivityScreenShot(nextActivity);

        nextActivity.finish();
    } finally {
        getInstrumentation().removeMonitor(monitor);
    }
}
 
源代码11 项目: welcome-android   文件: ActivityTest.java
@Before
public void initActivity() {
    instrumentation = InstrumentationRegistry.getInstrumentation();
    Instrumentation.ActivityMonitor monitor = new Instrumentation.ActivityMonitor(TestActivity.class.getName(), null, false);
    instrumentation.addMonitor(monitor);

    Intent intent = new Intent(instrumentation.getTargetContext(), TestActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    instrumentation.startActivitySync(intent);

    activity = instrumentation.waitForMonitor(monitor);
    assertNotNull(activity);
}
 
@Override
public void initActivity() {
    super.initActivity();
    welcomeMonitor = new Instrumentation.ActivityMonitor(DefaultWelcomeActivity.class.getName(), null, false);
    instrumentation.addMonitor(welcomeMonitor);
    new WelcomeHelper(activity, DefaultWelcomeActivity.class).forceShow();
    welcomeActivity = (WelcomeActivity) instrumentation.waitForMonitor(welcomeMonitor);
}
 
源代码13 项目: rxloader   文件: BaseRxLoaderActivityTest.java
protected T recreateActivity() {
    Instrumentation.ActivityMonitor activityMonitor = new Instrumentation.ActivityMonitor(getActivity().getClass().getName(), null, false);
    getInstrumentation().addMonitor(activityMonitor);
    getInstrumentation().runOnMainSync(new Runnable() {
        @Override
        public void run() {
            getActivity().recreate();
        }
    });
    activityMonitor.waitForActivity();
    getInstrumentation().waitForIdleSync();
    return (T) activityMonitor.getLastActivity();
}
 
源代码14 项目: caffeine   文件: ActivityUtilsTest.java
public void testLaunchActivity() {
    assertNotNull(getActivity());

    Instrumentation.ActivityMonitor activityMonitor = getInstrumentation().addMonitor(ActivityTwo.class.getName(), null, false);
    ActivityUtils.launchActivity(getActivity(), ActivityTwo.class, false);
    Activity activityTwo = activityMonitor.waitForActivity();
    SystemClock.sleep(100);

    assertTrue(ActivityTwo.activityStarted);
    activityTwo.finish();
}
 
源代码15 项目: caffeine   文件: ActivityUtilsTest.java
public void testLaunchActivity2() {
    assertNotNull(getActivity());

    Instrumentation.ActivityMonitor activityMonitor = getInstrumentation().addMonitor(ActivityTwo.class.getName(), null, false);
    ActivityUtils.launchActivity(getActivity(), ActivityTwo.class, true);
    Activity activityTwo = activityMonitor.waitForActivity();
    SystemClock.sleep(100);

    assertTrue(ActivityTwo.activityStarted);
    activityTwo.finish();
}
 
public InstrumentationActivityMonitorAssert(Instrumentation.ActivityMonitor actual) {
  super(actual, InstrumentationActivityMonitorAssert.class);
}
 
源代码17 项目: Android   文件: GroupSetTest.java
@Before
public void startTest() {
    Instrumentation.ActivityMonitor am = new Instrumentation.ActivityMonitor("connect.ui.activity.chat.set.GroupSetActivity", null, false);
    getInstrumentation().addMonitor(am);
    getInstrumentation().waitForMonitor(am);
}
 
源代码18 项目: Android   文件: ChatActivityTest.java
@Before
public void startTest() {
    Instrumentation.ActivityMonitor am = new Instrumentation.ActivityMonitor("connect.ui.activity.chat.ChatActivity", null, false);
    getInstrumentation().addMonitor(am);
    getInstrumentation().waitForMonitor(am);
}
 
源代码19 项目: Android   文件: SingleSetTest.java
@Before
public void startTest() {
    Instrumentation.ActivityMonitor am = new Instrumentation.ActivityMonitor("connect.ui.activity.chat.set.SingleSetActivity", null, false);
    getInstrumentation().addMonitor(am);
    getInstrumentation().waitForMonitor(am);
}
 
源代码20 项目: Android   文件: RoomListTest.java
@Before
public void startTest() {
    Instrumentation.ActivityMonitor am = new Instrumentation.ActivityMonitor("connect.ui.activity.home.HomeActivity", null, false);
    getInstrumentation().addMonitor(am);
    getInstrumentation().waitForMonitor(am);
}