App LifeCycle Callbacks - Detect When the User Exits Your App

Ever wondered how to detect when your app's user presses the back button or home button and exits your app? Do you want to add analytics or some custom logic like dumping/storing data when the user opens or leaves your app? If the answer to any of these questions is yes, then this article is for you.


To implement callbacks for the opening and closing of your Android app, we'll be making use of ProcessLifecycleOwner. This is a class provided natively by Android that provides lifecycle callbacks for the app, instead of just activities or fragments.

It is useful for use cases where you would like to add some logic to your app coming to the foreground or going to the background and you don't need milliseconds of accuracy in receiving these lifecycle events.

Through this, you can override the methods - onCreate() for when your app comes to the foreground, and either onPause() or onStop() when your app goes to the background.

You can add your custom logic for the app coming to the foreground in the onCreate() method and similarly in either the onPause() or onStop() for when the app is going to background.  

It also provides other methods like onStart() and onResume, but please note that onDestory() will never be called.


In your app's build.gradle file, add the following dependencies.

At the time of writing this article, the latest version was 2.5.1. When you're implementing it, you can check for the latest version over here.

The next step is to create an Application Class for your app and register the same in your app's manifest. Ignore this step if you already have an application class for your project.

Now, create a new class which extends DefaultLifecycleObserver. For our example, we will be calling it AppLifeCycleListener and we will be overriding the methods onCreate() and onStop() respectively for the app coming to foreground and going to background.  

Now, in the onCreate() of your application class, add the above newly created observer to the ProcessLifecycleOwner.

That's it, you're done. Now run your app, and in logcat filter for the word AppLifeCycleListener, and you can see the logs for when your app is coming to foreground and going to background.

I/AppLifeCycleListener: App Came to Foreground
I/AppLifeCycleListener: App Went to Background

Here, instead of these logs, you can add any sort of custom logic that you need.

GitHub Repo

We have implemented this project, and have hosted it on GitHub available over here. Kindly check this out and raise an issue/PR if you have any concerns during its implementation.

Hope you enjoyed this article. If it helped you, kindly consider supporting me on Ko-Fi. Thanks.