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")
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值