mirror of
https://github.com/M66B/FairEmail.git
synced 2026-03-30 21:58:52 +02:00
Close boundary on destroy
This commit is contained in:
@@ -71,10 +71,8 @@ public class ViewModelMessages extends ViewModel {
|
||||
if (model == null || !model.args.equals(args)) {
|
||||
Log.i("Creating model=" + viewType + " replace=" + (model != null));
|
||||
|
||||
if (model != null) {
|
||||
if (model != null)
|
||||
model.list.removeObservers(owner);
|
||||
model.clear();
|
||||
}
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
|
||||
@@ -174,7 +172,7 @@ public class ViewModelMessages extends ViewModel {
|
||||
|
||||
if (viewType == AdapterMessage.ViewType.THREAD || lowmem) {
|
||||
Log.i("Remove model=" + viewType);
|
||||
remove(viewType);
|
||||
models.remove(viewType);
|
||||
}
|
||||
|
||||
dump();
|
||||
@@ -182,10 +180,10 @@ public class ViewModelMessages extends ViewModel {
|
||||
});
|
||||
|
||||
if (viewType == AdapterMessage.ViewType.UNIFIED) {
|
||||
remove(AdapterMessage.ViewType.FOLDER);
|
||||
remove(AdapterMessage.ViewType.SEARCH);
|
||||
models.remove(AdapterMessage.ViewType.FOLDER);
|
||||
models.remove(AdapterMessage.ViewType.SEARCH);
|
||||
} else if (viewType == AdapterMessage.ViewType.FOLDER)
|
||||
remove(AdapterMessage.ViewType.SEARCH);
|
||||
models.remove(AdapterMessage.ViewType.SEARCH);
|
||||
|
||||
if (viewType != AdapterMessage.ViewType.THREAD) {
|
||||
last = viewType;
|
||||
@@ -201,15 +199,7 @@ public class ViewModelMessages extends ViewModel {
|
||||
@Override
|
||||
protected void onCleared() {
|
||||
for (AdapterMessage.ViewType viewType : new ArrayList<>(models.keySet()))
|
||||
remove(viewType);
|
||||
}
|
||||
|
||||
private void remove(AdapterMessage.ViewType viewType) {
|
||||
Model model = models.get(viewType);
|
||||
if (model != null) {
|
||||
model.clear();
|
||||
models.remove(viewType);
|
||||
}
|
||||
}
|
||||
|
||||
void observePrevNext(LifecycleOwner owner, final long id, final IPrevNext intf) {
|
||||
@@ -385,20 +375,23 @@ public class ViewModelMessages extends ViewModel {
|
||||
this.boundary = boundary;
|
||||
}
|
||||
|
||||
void setCallback(BoundaryCallbackMessages.IBoundaryCallbackMessages callback) {
|
||||
if (boundary != null)
|
||||
void setCallback(LifecycleOwner owner, BoundaryCallbackMessages.IBoundaryCallbackMessages callback) {
|
||||
if (boundary != null) {
|
||||
boundary.setCallback(callback);
|
||||
|
||||
owner.getLifecycle().addObserver(new LifecycleObserver() {
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
|
||||
public void onDestroyed() {
|
||||
boundary.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void setObserver(LifecycleOwner owner, @NonNull Observer<PagedList<TupleMessageEx>> observer) {
|
||||
//list.removeObservers(owner);
|
||||
list.observe(owner, observer);
|
||||
}
|
||||
|
||||
private void clear() {
|
||||
if (this.boundary != null)
|
||||
this.boundary.clear();
|
||||
}
|
||||
}
|
||||
|
||||
interface IPrevNext {
|
||||
|
||||
Reference in New Issue
Block a user