Skip to content

Commit 107c4fa

Browse files
author
Daniel Novak
committed
Prevent removing viewmodel twice
1 parent b0efd7b commit 107c4fa

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

library/src/main/java/eu/inloop/viewmodel/ViewModelHelper.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class ViewModelHelper<T extends IView, R extends AbstractViewModel<T>> {
1313

1414
private String mScreenId;
1515
private R mViewModel;
16+
private boolean mModelRemoved;
1617

1718
public void onCreate(@NonNull Activity activity, @Nullable Bundle savedInstanceState,
1819
@NonNull Class<? extends AbstractViewModel<T>> viewModelClass) {
@@ -30,7 +31,7 @@ public void onCreate(@NonNull Activity activity, @Nullable Bundle savedInstanceS
3031
final ViewModelProvider.ViewModelWrapper<T> viewModelWrapper = getViewModelProvider(activity).getViewModelProvider().getViewModel(mScreenId, viewModelClass);
3132
mViewModel = (R) viewModelWrapper.viewModel;
3233
if (savedInstanceState != null && viewModelWrapper.wasCreated) {
33-
Log.e("model", "Application recreated by system - restoring viewmodel");
34+
Log.d("model", "Fragment recreated by system - restoring viewmodel");
3435
mViewModel.restoreState(savedInstanceState);
3536
}
3637
}
@@ -112,8 +113,13 @@ private IViewModelProvider getViewModelProvider(@NonNull Activity activity) {
112113
}
113114

114115
protected boolean removeViewModel(@NonNull Activity activity) {
115-
boolean removed = getViewModelProvider(activity).getViewModelProvider().remove(mScreenId);
116-
mViewModel.onModelRemoved();
117-
return removed;
116+
if (!mModelRemoved) {
117+
boolean removed = getViewModelProvider(activity).getViewModelProvider().remove(mScreenId);
118+
mViewModel.onModelRemoved();
119+
mModelRemoved = true;
120+
return removed;
121+
} else {
122+
return false;
123+
}
118124
}
119125
}

0 commit comments

Comments
 (0)