package com.frogermcs.androiddevmetrics.internal.metrics;
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import com.frogermcs.androiddevmetrics.internal.MethodsTracingManager;
import com.frogermcs.androiddevmetrics.internal.ui.dialog.MethodsTracingFinishedDialog;
import java.util.HashSet;
import java.util.Set;
/**
* Created by Miroslaw Stanek on 06.02.2016.
*/
public class ActivityLaunchMetrics implements Application.ActivityLifecycleCallbacks {
private static class Holder {
static final ActivityLaunchMetrics INSTANCE = new ActivityLaunchMetrics();
}
public static ActivityLaunchMetrics getInstance() {
return Holder.INSTANCE;
}
public final Set<OnMetricsDataListener> dataListeners = new HashSet<>();
private String currentActivityName = "not_set";
private MethodsTracingManager methodsTracingManager;
ActivityLaunchMetrics() {
methodsTracingManager = MethodsTracingManager.getInstance();
}
@Override
public void onActivityCreated(final Activity activity, Bundle savedInstanceState) {
ActivityLifecycleMetrics.getInstance().logPostOnCreate(activity);
currentActivityName = activity.getClass().getSimpleName();
}
@Override
public void onActivityStarted(Activity activity) {
ActivityLifecycleMetrics.getInstance().logPostOnStart(activity);
}
@Override
public void onActivityResumed(Activity activity) {
ActivityLifecycleMetrics.getInstance().logPostOnResume(activity);
final String[] tracedMethods = methodsTracingManager.getTracedMethods();
if (tracedMethods != null) {
MethodsTracingFinishedDialog dialog = MethodsTracingFinishedDialog.newInstance(tracedMethods);
dialog.show(activity.getFragmentManager(), MethodsTracingFinishedDialog.TAG);
methodsTracingManager.clearTracedMethods();
}
}
@Override
public void onActivityPaused(Activity activity) {
ActivityLifecycleMetrics.getInstance().logOnPaused(activity);
}
@Override
public void onActivityStopped(Activity activity) {
ActivityLifecycleMetrics.getInstance().logOnStopped(activity);
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
ActivityLifecycleMetrics.getInstance().logOnDestroyed(activity);
}
public void addMetricsDataListener(OnMetricsDataListener onDataListener) {
dataListeners.add(onDataListener);
}
public void removeMetricsDataListener(OnMetricsDataListener onDataListener) {
dataListeners.remove(onDataListener);
}
public String getCurrentActivityName() {
return currentActivityName;
}
}