I have an app which track user activity on app which include time etc, Now if user has opened the app, It will start an session and till user in this app , his session will cont
1.Create a class named AppLifecycleTracker and paste this.
private class AppLifecycleTracker implements ActivityLifecycleCallbacks {
private int numStarted = 0;
private String TAG = "AppLifecycleTracker";
private int numOfCreated = 0;
@Override`enter code here`
public void onActivityCreated(Activity activity, Bundle bundle) {
if (numOfCreated == 0) {
Log.d(TAG, "onActivityCreated: app started");
}
numOfCreated++;
Log.d(TAG, "onActivityCreated: " + numOfCreated);
}
@Override
public void onActivityStarted(Activity activity) {
if (numStarted == 0) {
// app went to foreground
Log.d(TAG, "onActivityStarted: foreground");
}
numStarted++;
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
numStarted--;
if (numStarted == 0) {
// app went to background
Log.d(TAG, "onActivityStarted: background");
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
numOfCreated--;
Log.d(TAG, "onActivityDestroyed: " + numOfCreated);
}
}
* in onActivityCreate if numOfCreated = 0, then you can say app has started. * in onActivityDestroyed if numOfCreated = 0, then you can say app is closed.
Create a class extending Application, in onCreate, add this line
registerActivityLifecycleCallbacks(new AppLifecycleTracker());
set application name as the Application class in manifest.xml
Thats it. You are good to go.