需求说明:在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")
}
}