Fixed view model messages lifecycle

pull/147/head
M66B 7 years ago
parent dcb7496add
commit 66d27fe3af

@ -1885,7 +1885,7 @@ public class FragmentMessages extends FragmentBase {
builder.setFetchExecutor(executor);
modelMessages.setMessages(viewType, getActivity(), builder.build());
modelMessages.setMessages(viewType, getViewLifecycleOwner(), builder.build());
modelMessages.observe(viewType, getViewLifecycleOwner(), observer);
}

@ -38,20 +38,22 @@ public class ViewModelMessages extends ViewModel {
final boolean thread = (viewType == AdapterMessage.ViewType.THREAD);
this.messages.put(thread, messages);
// Keep list up-to-date for previous/next navigation
messages.observe(owner, new Observer<PagedList<TupleMessageEx>>() {
@Override
public void onChanged(PagedList<TupleMessageEx> messages) {
}
});
owner.getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroyed() {
Log.i("Removed model thread=" + thread);
ViewModelMessages.this.messages.remove(thread);
}
});
if (thread)
owner.getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroyed() {
Log.i("Removed model thread");
ViewModelMessages.this.messages.remove(thread);
}
});
else {
// Keep list up-to-date for previous/next navigation
messages.observeForever(new Observer<PagedList<TupleMessageEx>>() {
@Override
public void onChanged(PagedList<TupleMessageEx> messages) {
}
});
}
}
void observe(AdapterMessage.ViewType viewType, LifecycleOwner owner, Observer<PagedList<TupleMessageEx>> observer) {

Loading…
Cancel
Save