Closed windows7lake closed 5 years ago
大神,我在你的demo的基础上将HomeFragment单独提出到另一个JumpActivity时,发现一个问题: 第一次启动JumpActivity时,HomeFragment中的刷新操作是可以正常下发的,此时关闭JumpActivity,然后再次进入,会出现HomeFragment刷新事件无法下发的情况,被takeUntil(mAutoDisposeObserver)拦截了。 按照我的思路,正常关闭的时候,HomeViewModel和HomeRepository会跟随Fragment和Activity的生命周期被销毁,但是这里貌似并没有。
fun refreshPagedList() { fetchEventByPage(1) .takeUntil(mAutoDisposeObserver) .subscribe { mRemoteRequestStateProcessor.onNext(it) } }
mAutoDisposeObserver在ViewModel中调用了下面代码后:
override fun onCleared() { super.onCleared() repo.mAutoDisposeObserver.onNext(Unit) repo.mAutoDisposeObserver.onComplete() }
mAutoDisposeObserver貌似并没有重新创建,导致请求被截断。
JumpActivity代码:
class JumpActivity : BaseActivity() { val fragment: BaseFragment = HomeFragment() override val layoutId = R.layout.activity_common_fg override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) supportFragmentManager.apply { findFragmentByTag(fragment::class.simpleName) ?: beginTransaction() .add(R.id.flContainer, fragment, fragment::class.simpleName) .commitAllowingStateLoss() } } }
activity_common_fg.xml代码:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/flContainer" android:layout_width="match_parent" android:layout_height="match_parent" />
求教?新手上路
@windows7lake
对不起,这个是我代码的问题,具体原因你可以参考这里
因为最近在忙,所以这个bug我只在 MVI 架构的demo上进行了修复,不知道你是否有兴趣提PR呢? 😄
谢谢大神!我先看看
谢谢你的PR. 👍
大神,我在你的demo的基础上将HomeFragment单独提出到另一个JumpActivity时,发现一个问题: 第一次启动JumpActivity时,HomeFragment中的刷新操作是可以正常下发的,此时关闭JumpActivity,然后再次进入,会出现HomeFragment刷新事件无法下发的情况,被takeUntil(mAutoDisposeObserver)拦截了。 按照我的思路,正常关闭的时候,HomeViewModel和HomeRepository会跟随Fragment和Activity的生命周期被销毁,但是这里貌似并没有。
mAutoDisposeObserver在ViewModel中调用了下面代码后:
mAutoDisposeObserver貌似并没有重新创建,导致请求被截断。
JumpActivity代码:
activity_common_fg.xml代码:
求教?新手上路