Use ViewModel to prevent hammering storage

When you turn a LoyaltyCard into a bundle, it writes the files to
storage as it can't otherwise fit in the limited storage size. This
means that, on rotation, you write all images to storage and load them
again. Using a ViewModel prevents that storage hit due to holding it in
memory (as a ViewModel has a longer lifecycle).
This commit is contained in:
Sylvia van Os
2024-11-26 22:32:15 +01:00
parent 96a9850d9c
commit 83fca93649
4 changed files with 199 additions and 197 deletions

View File

@@ -585,13 +585,13 @@ public class LoyaltyCardViewActivityTest {
// A change was made
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.confirmExitDialog.isShowing());
assertEquals(true, activity.hasChanged);
assertEquals(true, activity.viewModel.getHasChanged());
assertEquals(false, activity.isFinishing());
// Exit after setting hasChanged to false
activity.hasChanged = false;
activity.viewModel.setHasChanged(false);
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(false, activity.hasChanged);
assertEquals(false, activity.viewModel.getHasChanged());
assertEquals(true, activity.isFinishing());
}
@@ -708,13 +708,13 @@ public class LoyaltyCardViewActivityTest {
// A change was made
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.confirmExitDialog.isShowing());
assertEquals(true, activity.hasChanged);
assertEquals(true, activity.viewModel.getHasChanged());
assertEquals(false, activity.isFinishing());
// Exit after setting hasChanged to false
activity.hasChanged = false;
activity.viewModel.setHasChanged(false);
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(false, activity.hasChanged);
assertEquals(false, activity.viewModel.getHasChanged());
assertEquals(true, activity.isFinishing());
database.close();