android lifecycle库监听app生命周期 app进入退出

需求说明:在app每次进入前台进程或者退出界面时执行一些操作

实现思路:android官方库lifecycle中的ProcessLifecycleOwner类

步骤:

依赖 :下面依赖根据自己需要选择,一般使用第一次就好,如果不想用ViewModel 和 LiveData应该使用这个就行

implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" 

dependencies {
    def lifecycle_version = "2.0.0"

    // ViewModel and LiveData
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // use -ktx for Kotlin
    // alternatively - just LiveData
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
    //     AndroidX libraries use this lightweight import for Lifecycle
    implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // use kapt for Kotlin
    // alternately - if using Java8, use the following instead of lifecycle-compiler
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // use -ktx for Kotlin

    // optional - Test helpers for LiveData
    testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
}

2 application oncreate添加如下代码

ProcessLifecycleOwner.get().lifecycle.addObserver(ProcessLifecycleObserver())

3 创建ProcessLifecycleObserver类,然后在 enterAppListener和exitAppListener执行自己需要的操作即可,也可以自己选择相应的生命周期方法进行操作。

package com.srsx.yuehuiot

import android.util.Log
import androidx.lifecycle.*

/**
 * des:监听整个app的生命周期
 */
class ProcessLifecycleObserver:LifecycleObserver{
    /**
     * 当app变成前台进程时监听
     * 此方法一次app进入退出只会调用一次
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun enterAppListener(){
        Log.e("ProcessLifecycle","ON_CREATE")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun startAppListener(){
        Log.e("ProcessLifecycle","ON_START")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun resumeAppListener(){
        Log.e("ProcessLifecycle","ON_RESUME")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun pauseAppListener(){
        Log.e("ProcessLifecycle","ON_PAUSE")
    }
    /**
     * 当app变成后台进程或者退出调用
     * 此方法一次app进入退出只会调用一次
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun exitAppListener(){
        Log.e("ProcessLifecycle","ON_STOP")
    }

}

猜你喜欢

转载自blog.csdn.net/qq_32319999/article/details/83339825