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); builder.setFetchExecutor(executor);
modelMessages.setMessages(viewType, getActivity(), builder.build()); modelMessages.setMessages(viewType, getViewLifecycleOwner(), builder.build());
modelMessages.observe(viewType, getViewLifecycleOwner(), observer); modelMessages.observe(viewType, getViewLifecycleOwner(), observer);
} }

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

Loading…
Cancel
Save