package com.schibsted.spain.barista.flakyespresso;
import android.app.Activity;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
import android.support.test.runner.lifecycle.Stage;
import android.util.Log;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
public class FlakyUtil {
public static final String TAG = "FLAKY";
/**
* Closes all current activities.
*/
public static void finishAllActivitiesOnUiThread() {
InstrumentationRegistry.getInstrumentation()
.runOnMainSync(new Runnable() {
@Override
public void run() {
finishAllActivities();
}
});
}
/**
* Copied from {@link android.support.test.runner.MonitoringInstrumentation.ActivityFinisher}
*/
private static void finishAllActivities() {
List<Activity> activities = new ArrayList<>();
for (Stage s : EnumSet.range(Stage.CREATED, Stage.STOPPED)) {
activities.addAll(ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(s));
}
Log.i(TAG, "Activities that are still in CREATED to STOPPED: " + activities.size());
for (Activity activity : activities) {
if (!activity.isFinishing()) {
try {
Log.i(TAG, "Finishing activity: " + activity);
activity.finish();
} catch (RuntimeException e) {
Log.e(TAG, "Failed to finish activity.", e);
}
}
}
}
}