vitaviva/fragivity

fragment onResum 不回调问题

Closed this issue · 10 comments

A页面pushto 到B页面。 B页面再次push或者pushto到A页面,A页面的生命周期会错乱

生命周期错乱具体就是指onResume没回调是吗, 我用源码里的demo跑了一下onResume是正常回调的。你的工程代码发出来看看?

A页面pushTo到B页面B页面在push到C 这时候C页面pop到B B页面的onResum 就不回调了。用的是源码试的

官方demo ,把SplashFragment 切换到HomeFragment的方法改为pushTo ,然后从HomeFragment push到其他页面,这个时候HomeFragment的生命周期是 onPause onStop ,当从其他页面页面再回到HomeFragment的时候,这个时候HomeFragment并没有如预想的调用onStart onResume

我尝试改了下,试试看有没有修复这个bug。

现在的代码不好依赖新的navigation;我想fork出一个精简版本,把show/hide改回replace。

val prevFragment = if (isPushTo) {
backStack.removeLast() // 这里没有清空是不是有问题
fragmentManager.fragments.forEach { ft.remove(it) }
fragmentManager.mBackStack?.clear()
null
} else {

我尝试改了下,试试看有没有修复这个bug。

实测一下,还是有问题的 ,
demo在这里 , showwiki@ee8e229
当从SplashFragment跳转到CommFragment , 点击goHome pushTo到HomeFragment, 再从HomeFragment跳转到其他页面,再返回 HomeFragment ,HomeFragment不会回调onStart onResume 从 backStack.removeLast() 清空的不彻底。换一种场景就无法覆盖了, qintaiyuan 提交的方案
是可以的。

现在可以了,qdsfdhvh 我的测试代码你好像合并进去dev分支了, 回滚一下吧

现在可以了,qdsfdhvh 我的测试代码你好像合并进去dev分支了, 回滚一下吧

不用啊,sample多一层跳转没什么问题的,方便测试。