前后台切换时拦截onResume的接口请求

最近遇到一个问题:一个activity+N个fragment的订单列表界面,在前后台切换的时候了调了很多接口,排查在onResume调的接口来实现懒加载和可见刷新订单状态的,虽然体验不好,但是需求确实如此,于是就想优化这个切换时的接口调用。

在探究问题的过程中,发现前后台切换生命周期和可见是生命周期是一样的,如图:

A start B ,B back A

从前台切换到后台再切换回前台的生命周期执行,如图

前后台切换

所有,这里如果在onResume上处理接口数据刷新,在前后台切换时也会调接口数据刷新,这肯定是不能忍受。我在考虑如果优化的时候想的是拦截前后台切换这个动作,但是这个动作捕捉确实我不知道,所有我想到一个骚操作。

我们知道,A start B是,A先执行onPasue 接着执行B的onCreate onStart onResume 再执行A的onStop


A start B

B back A 时又执行

B back A

所以,在A start B的时候 顶层的activity或者fragment在onStop之前已经变化(如果是在onCreate在stack栈中入栈),所以我想的骚操作就是在onStop的时候,获取App顶层Activity的simpleName,然后在onResume时,判断是前后台切换还是B back,代码如下:


完整流程生命周期

配合懒加载写进封装到base:


base

tryLoadData是比较基础的懒加载处理setUserVisibleHint和onResume的处理


懒加载数据请求

完结,撒花

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容