简体   繁体   中英

How to catch lifecycle events with ProcessLifecycleOwner?

I am trying to (at least partially) determine when an application gets closed by the user to release some connections, etc. To do this, I am using the ProcessLifecycleOwner with my application class implementing LifecycleObserver . Despite taking the starting code from tutorials and other helpful articles, it does not seem to detect any lifecycle events.

Most of the code came from this example .

My application class:

public class App extends Application implements LifecycleObserver {
    @Override
    public void onCreate() {
        super.onCreate();

        ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    public void created() {
        Log.d("SampleLifeCycle", "ON_CREATE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void started() {
        Log.d("SampleLifeCycle", "ON_START");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void resumed() {
        Log.d("SampleLifeCycle", "ON_RESUME");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void paused() {
        Log.d("SampleLifeCycle", "ON_PAUSE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void stopped() {
        Log.d("SampleLifeCycle", "ON_STOP");
    }
}

The dependency in Gradle

dependencies {
    //...
    implementation 'android.arch.lifecycle:extensions:1.1.1'
}

So far, this code has not logged a single event of any sort, whether the app is entering the foreground or the background.

EDIT

Note: You NEED to declare your application in the Manifest for anything to work in your custom application class.

You need the corresponding annotation processor to pay attention to those annotations:

annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'

Or, enable Java 8 support, and switch to DefaultLifecycleObserver .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM