Fragment 回退栈问题
今天在修改之前项目的时候有个fragmenta里可以点击切换到到另一个fragmentb中,然后从这个fragmentb里点击返回到fragmenta中的时候要去刷新数据。
然后在点击返回的时候遇到了问题,从fragmentb返回到fragmenta的时候不知道为什么就是进不到fragmenta的生命周期方法中,任何一个生命周期都进不去!!!(这就让人很郁闷了)。
理论上来说在切换fragment的时候 fragmenta 会进入 fragmenta onStop()和 onDestroyView()方法然后进入fragmentb 这时点击返回页面b进入onStop(),onDestroyView()方法。此时回到页面a 然后依次进入onCreateView(),onStart(),onResume(),但是现在一个方法都没有进去。
在网上的搜索了一些资料验证了点击返回生命周期的回调应该是像上边说的这样,然后将两个fragment的每个生命周期打印了log,然后在操作了一下两个页面见的返回。查看页面切换时的生命周期发现了问题,在从页面a切换到页面b的时候并没有调用页面a的onDestroyView()方法,然而从页面b返回到a页面的时候生命周期是正常的(进入 onStop (),onDestroyView())。看到log日志后想到问题可能出在页面a上边,然后检查了一下页面a的布局,发现页面a和页面b不是放在同一个父控件上边显示的。然后将代码做了修改把两个页面放到了同一个父控件里做显示,运行查看生命周期已经正常了。
PS:不知道之前的同事将页面放到两个父控件中做显示是不是出于每次页面返回的时候进入生命周期从新加载视图请求数据对页面性能上有消耗的原因。
网友评论