bytedance / scene

Android Single Activity Framework compatible with Fragment.
Apache License 2.0
2.11k stars 202 forks source link

scene自身添加一个 NavigationListener,在pop时没有收到回调 #22

Closed Ccixyj closed 4 years ago

Ccixyj commented 4 years ago

有一个使用场景需要在scene内部监听栈进出。push时可以,pop时收不到。

 requireNavigationScene().addNavigationListener(this , NavigationListener { from, to, isPush ->
   //pop 时没有回调
        } )
qii commented 4 years ago

你这个被pop的就是你在监听的Scene?

Ccixyj commented 4 years ago

@qii 对。

qii commented 4 years ago

addNavigationListener 的时候这个 this 就是当前的 Scene 的 lifecycleowner,pop 这个 Scene 的时候,自然因为 lifecycle 销毁,于是回调被移除了,于是也就收不到 NavigationListener 的回调。或者你可以考虑把 this 改为 requireNavigationScene(),然后在回调里面判断 from == 你的 Scene,并且 isPush == false,然后再把自己 removeNavigationListener 掉

Ccixyj commented 4 years ago

交给navigation scene也是可以的