Remove model observer on destroy

pull/156/head
M66B 6 years ago
parent f257b51500
commit 189fd5aefb

@ -60,17 +60,15 @@ public class ViewModelMessages extends ViewModel {
String query, boolean server) {
Args args = new Args(context, account, folder, thread, id, query, server);
Log.i("Get model " + viewType + " " + args);
Log.i("Get model=" + viewType + " " + args);
dump();
Model model = models.get(viewType);
if (model == null || !model.args.equals(args)) {
Log.i("Creating model");
Log.i("Creating model=" + viewType + " replace=" + (model != null));
if (model != null) {
if (model != null)
model.clear();
model.list.removeObservers(owner);
}
DB db = DB.getInstance(context);
@ -149,6 +147,15 @@ public class ViewModelMessages extends ViewModel {
model = new Model(args, builder.build(), boundary);
models.put(viewType, model);
if (viewType != AdapterMessage.ViewType.THREAD)
// Keep list up-to-date for previous/next navigation
model.list.observeForever(new Observer<PagedList<TupleMessageEx>>() {
@Override
public void onChanged(PagedList<TupleMessageEx> messages) {
}
});
}
owner.getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroyed() {
@ -158,11 +165,17 @@ public class ViewModelMessages extends ViewModel {
int free_mb = Helper.getFreeMemMb();
boolean lowmem = (free_mb < LOW_MEM_MB);
Log.i("Destroy model " + viewType +
Log.i("Destroy model=" + viewType +
" cache=" + cache + " lowmem=" + lowmem + " free=" + free_mb + " MB");
Model model = models.get(viewType);
if (model != null) {
Log.i("Remove observer model=" + viewType);
model.list.removeObservers(owner);
}
if (viewType == AdapterMessage.ViewType.THREAD || !cache || lowmem) {
Log.i("Remove model " + viewType);
Log.i("Remove model=" + viewType);
remove(viewType);
}
@ -170,15 +183,6 @@ public class ViewModelMessages extends ViewModel {
}
});
if (viewType != AdapterMessage.ViewType.THREAD)
// Keep list up-to-date for previous/next navigation
model.list.observeForever(new Observer<PagedList<TupleMessageEx>>() {
@Override
public void onChanged(PagedList<TupleMessageEx> messages) {
}
});
}
if (viewType == AdapterMessage.ViewType.UNIFIED) {
remove(AdapterMessage.ViewType.FOLDER);
remove(AdapterMessage.ViewType.SEARCH);

Loading…
Cancel
Save