最近遇到一个问题:一个activity+N个fragment的订单列表界面,在前后台切换的时候了调了很多接口,排查在onResume调的接口来实现懒加载和可见刷新订单状态的,虽然体验不好,但是需求确实如此,于是就想优化这个切换时的接口调用。
在探究问题的过程中,发现前后台切换生命周期和可见是生命周期是一样的,如图:
A start B ,B back A从前台切换到后台再切换回前台的生命周期执行,如图
前后台切换所有,这里如果在onResume上处理接口数据刷新,在前后台切换时也会调接口数据刷新,这肯定是不能忍受。我在考虑如果优化的时候想的是拦截前后台切换这个动作,但是这个动作捕捉确实我不知道,所有我想到一个骚操作。
我们知道,A start B是,A先执行onPasue 接着执行B的onCreate onStart onResume 再执行A的onStop
A start BB back A 时又执行
B back A所以,在A start B的时候 顶层的activity或者fragment在onStop之前已经变化(如果是在onCreate在stack栈中入栈),所以我想的骚操作就是在onStop的时候,获取App顶层Activity的simpleName,然后在onResume时,判断是前后台切换还是B back,代码如下:
完整流程生命周期配合懒加载写进封装到base:
basetryLoadData是比较基础的懒加载处理setUserVisibleHint和onResume的处理
懒加载数据请求完结,撒花
网友评论