package com.appboy;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import com.appboy.ui.inappmessage.AppboyInAppMessageManager;
/**
* Can be used on API level 14 and above to automatically handle Appboy lifecycle methods.
* Optionally, openSession() and closeSession() are called on onActivityStarted and onActivityStopped respectively.
* The InAppMessageManager methods of registerInAppMessageManager() and unregisterInAppMessageManager() can
* be optionally called here as well.
*/
@TargetApi(14)
public class AppboyLifecycleCallbackListener implements Application.ActivityLifecycleCallbacks {
private final boolean mRegisterInAppMessageManager;
private final boolean mSessionHandlingEnabled;
/**
* A default constructor equivalent to calling AppboyLifecycleCallbackListener(true, true)
*/
public AppboyLifecycleCallbackListener() {
this(true, true);
}
/**
* @param sessionHandlingEnabled When true, handles calling openSession and closeSession in onActivityStarted
* and onActivityStopped respectively.
* @param registerInAppMessageManager When true, registers and unregisters the InAppMessageManager in
* onActivityResumed and onActivityPaused respectively.
*/
public AppboyLifecycleCallbackListener(boolean sessionHandlingEnabled, boolean registerInAppMessageManager) {
mRegisterInAppMessageManager = registerInAppMessageManager;
mSessionHandlingEnabled = sessionHandlingEnabled;
}
@Override
public void onActivityStarted(Activity activity) {
if (mSessionHandlingEnabled) {
Appboy.getInstance(activity.getApplicationContext()).openSession(activity);
}
}
@Override
public void onActivityStopped(Activity activity) {
if (mSessionHandlingEnabled) {
Appboy.getInstance(activity.getApplicationContext()).closeSession(activity);
}
}
@Override
public void onActivityResumed(Activity activity) {
if (mRegisterInAppMessageManager) {
AppboyInAppMessageManager.getInstance().registerInAppMessageManager(activity);
}
}
@Override
public void onActivityPaused(Activity activity) {
if (mRegisterInAppMessageManager) {
AppboyInAppMessageManager.getInstance().unregisterInAppMessageManager(activity);
}
}
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
if (mRegisterInAppMessageManager) {
AppboyInAppMessageManager.getInstance().ensureSubscribedToInAppMessageEvents(activity.getApplicationContext());
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {}
@Override
public void onActivityDestroyed(Activity activity) {}
}