Android app后台回到前台时的监听

在一次项目,有个需求涉及到切后台回到app时,需要调起一个弹窗,以这个需求为例子,跟大家分享下我如何实现的(大牛轻拍 = = )

首先,我们在app初始化时,要注册activity生命周期的回调,我这边项目里在BaseApplication初始化时调用registerActivityLifecycleCallbacks()

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的话,就不会调用你设定的方法。

以上,是我刚接触不久的问题,分享给大家,写的不好的大家见谅,有问题可以评论或私信我,本人还是实习生,请轻拍= =

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一 Activity 1 Activity 生命周期 1.1 Activity 的四种状态 running 当前...
    _执_念__阅读 13,608评论 0 91
  • Fragment,俗称碎片,自 Android 3.0 开始被引进并大量使用。然而就是这样耳熟能详的一个东西,在开...
    亦枫阅读 24,180评论 9 84
  • 最近刚从旧公司离职,为面试在做准备,因为平时开发CV大法用得比较多,很多基础知识掌握得不是很牢靠以及很多工具框架只...
    黎清海阅读 6,637评论 1 19
  • 等啊等,等啊等。我们终于等到了体育课。其实,我们不是想要上体育课,而是让我们最受欢迎的跳绳比赛要来了。 我记得...
    齐一潼随笔散记阅读 2,823评论 0 1
  • 人大多数都相同,却一直在证明自己不同。 穷极一生追求的也许只是别人手到擒来的。 为了所谓的梦想奋斗,请问你的梦想是...
    M喜宝阅读 421评论 0 0