Billy Brawne..
5
我无法使用其他任何解决方案,因此最终不得不这样做:
声明您的ActivityTestRule:
@Rule
public ActivityTestRule mainActivityTestRule =
new ActivityTestRule<>(MainActivity.class);
声明一个finalActivity数组来存储您的活动:
private final Activity[] currentActivity = new Activity[1];
添加一个帮助程序方法来向应用程序上下文注册以获取生命周期更新:
private void monitorCurrentActivity() {
mainActivityTestRule.getActivity().getApplication()
.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(final Activity activity, final Bundle savedInstanceState) { }
@Override
public void onActivityStarted(final Activity activity) { }
@Override
public void onActivityResumed(final Activity activity) {
currentActivity[0] = activity;
}
@Override
public void onActivityPaused(final Activity activity) { }
@Override
public void onActivityStopped(final Activity activity) { }
@Override
public void onActivitySaveInstanceState(final Activity activity, final Bundle outState) { }
@Override
public void onActivityDestroyed(final Activity activity) { }
});
}
添加助手方法以获取当前活动
private Activity getCurrentActivity() {
return currentActivity[0];
}
因此,启动第一个活动后,只需调用monitorCurrentActivity(),然后在需要引用当前活动时就调用getCurrentActivity()