code小生 一个专注大前端领域的技术平台公众号回复
Android
加入安卓技术群
作者:敬琛
链接:https://www.jianshu.com/p/916ba39f70fa
声明:本文已获
授权发表,转发等请联系原作者授权
敬琛
一
在一次项目,有个需求涉及到切后台回到app时,需要调起一个弹窗,以这个需求为例子,跟大家分享下我如何实现的(大牛轻拍 = = )
二
首先,我们在app初始化时,要注册activity生命周期的回调,我这边项目里在BaseApplication初始化时调用registerActivityLifecycleCallbacks()
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNwgzYlFWZ3IjYzIDMjVmY4UTY0IDZidTO2czNkBjNj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
registerActivityLifecycleCallbacks
它需要一个ActivityLifecycleCallbacks类型的参数
ActivityLifecycleCallbacks
这个接口涉及到所有activity生命周期的回调
回归正题,先初始化ActivityLifecycleCallbacks,
只截图了一部分
我们现在要做的是后台回前台,所以我们只选择onActivityStarted和onActivityPaused
我是这么做判断的,给个foregroundActivityCount去表示当前app有多少个activity处于启动的状态,给个Boolean值appInBackground判断app是否处于后台,每次打开app,当启动一个activity时,就统计开启activity的次数,并且调用你所需要的监听方法;只要在start 和 stop时判断有所activity都stop了,当当前activity启动次数为0时,说明app处于后台;
onActivityStarted
onActivityStopped
监听方法和接口
三
初始化已经完成,接下来就是怎么调用了。我们去到后台回来时需要操作的activity或者fragment,在初始化时调取BaseApplication里面刚才设定的方法
我项目里用到的是kotlin
在里面写下你后台回来时你需要的操作
四
还有一个缺陷,假如是在指定fragment做监听怎么办?其实都差不多的,fragment在activity里,绑定 了activity的生命周期,假设我们要在指定的fragment才调取这个方法,我们需要在加一层判断,判断当前fragment是否可见
setUserVisibleHint
判断是否处于当前fragment
这样,只要你每次从后台回来,都可以监听到,但如果不在当前fragment的话,就不会调用你设定的方法。
五
以上,是我刚接触不久的问题,分享给大家,写的不好的大家见谅,有问题可以评论或私信我,本人还是实习生,请轻拍= =
相关阅读
1 Android 后台运行白名单,优雅实现保活
2 Android Jetpack - 使用 WorkManager 管理后台任务
3 仿抖音 APP 视频切换和点赞效果
4 JetpackNote---基于Jetpack的学习笔记APP
5 碎阅:一款基于 douban 及 ONE API 开发的资讯类 App
如果你有写博客的好习惯欢迎投稿
点个在看,小生感恩大家❤️