微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“ AutoDispose”使用相同的“ LifeCyclerOwner”进行不同的退订

如何解决“ AutoDispose”使用相同的“ LifeCyclerOwner”进行不同的退订

我按照android开发的官方教程构建了一个使用'ViewPage2'和'Tablayout',使用RxJava3,Autodispose2和RxBinding的UI:

  1. 一个父片段和两个子片段作为视图页面
  2. 在子片段视图页面中,有“ RecyclerView”。在“ RecyclerView”的项目视图内部有一个按钮,它通过将子片段用作“ LifeCyclerOwner”,使用“ Autodispose2”和“ RxBinding”来订阅“ click”事件。
  3. 在子片段视图页面中,有一个“ EditText”,该事件的“ EditText”也通过将子片段用作“ LifeCyclerOwner”通过“ Autodispose2”和“ RxBinding”进行订阅
  4. 在通过滑动更改子片段视图页面之前,将按预期使用事件。但是,在更改子片段视图页面后,将取消订阅“ RecyclerView”的项目视图内的按钮的预订,虽然在“ RecyeclerView”外部订阅了“ EditText”,但是在同一片段视图页面中具有相同的“ LifeCyclerOwner”仍然有效! / li>
  5. 我试图通过以下方式调试为什么会发生这种情况:
  • i。注释掉“ RecyclerView”项目视图内按钮的订阅的“ .to(autodisposable(AndroidLifecycleScopeProvider.from(m_lifecycleOwner)))”,在片段视图页面更改后持续保留,甚至被消耗。
  • ii。我使用没有任何Rx模式的原始事件侦听模式来验证是否触发了按钮的“单击”事件。片段视图页面更改后,确实触发了“点击”事件。
  • iii。我将“ LifeCyclerOwner”更改为父片段,并且一切正常。
  • iv。我使用'@OnLifecycleEvent'记录状态更改,当视图页面更改时会触发'ON_PAUSE'事件,这意味着由于'Autodispose'的行为,当'ON_RESUME'事件后跟'ON_PAUSE'时,将处理订阅。 / li>

我的问题是,导致视图页面更改后,导致“ Autodispose2”从“ RecyclerView”项目视图内的按钮取消订阅的原因是什么,而在具有相同“ LifeCyclerOwner”的相同子片段中订阅“ EditText”仍然有效?当片段事件为“ ON_PAUSE”时,应同时处置这两个订阅

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。