如何监听App在前台还是后台

背景

  1. 业务很多时候都需要监听App处于前台还是后台进行业务逻辑处理,以前我们通用做法是通过通过application注册监听activity生命周期回调,用onResume和onStop的次数来判断大小就可以得出App此刻在前台还是后台。

官方支持(更为简单接入)

  1. Android官网深知我们开发的诉求,现已通过ProcessLifecycleOwner 官方类支持给开发者回调app处于前台还是后台了,通过给ProcessLifecycleOwner注册listener,当应用回到前台时候就会回调onResume,当应用切到后台回调onPause。
ProcessLifecycleOwner.get().lifecycle.addObserver(object: DefaultLifecycleObserver {
            override fun onResume(owner: LifecycleOwner) {
                //应用在前台
            }

            override fun onPause(owner: LifecycleOwner) {
                //应用在后台
            }
        })
源码分析
  1. 从图一可以看出官方思路和我们之前是一致的,attach方法是通过application创建时候调用init初始化传入上下文,这里现跳过不看。通过Callback监听App内的activity生命周期。
图一
  1. 从图二分析在activityPaused和activityResumed函数里面只不过是统计activity的resume和pause的回调,当resume的次数为0的时候,postDelay 700ms,这里的700ms我感觉是为了避免那种快速退到后台又返回的,这种情况就不返回App退到后台状态给开发者了。


    图二

总结

  1. 官方也是借鉴了我们曾经的思路,只不过将我们每个人所需要做的封装起来,让他们不用写重复的代码了。
  2. 技术不断迭代,人需要不断学习进步。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容