Move TaskHandler to ViewModel

This should make it possible to properly cancel the running barcode
generation threads on rotation and prevent CPU rising on many rotations.
This commit is contained in:
Sylvia van Os
2024-11-26 22:40:46 +01:00
parent 83fca93649
commit 7fe67960bf
2 changed files with 6 additions and 5 deletions

View File

@@ -156,8 +156,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
ActivityResultLauncher<Intent> mCropperLauncher;
UCrop.Options mCropperOptions;
final private TaskHandler mTasks = new TaskHandler();
// store system locale for Build.VERSION.SDK_INT < Build.VERSION_CODES.N
private Locale mSystemLocale;
@@ -1591,7 +1589,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
private void generateBarcode() {
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
viewModel.getTaskHandler().flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
String cardIdString = viewModel.getLoyaltyCard().barcodeId != null ? viewModel.getLoyaltyCard().barcodeId : viewModel.getLoyaltyCard().cardId;
CatimaBarcode barcodeFormat = viewModel.getLoyaltyCard().barcodeType;
@@ -1615,13 +1613,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
Log.d(TAG, "ImageView size now known");
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, LoyaltyCardEditActivity.this, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
viewModel.getTaskHandler().executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
});
} else {
Log.d(TAG, "ImageView size known known, creating barcode");
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, this, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
viewModel.getTaskHandler().executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
}

View File

@@ -4,11 +4,14 @@ import android.net.Uri
import androidx.lifecycle.ViewModel
import protect.card_locker.LoyaltyCard
import protect.card_locker.LoyaltyCardField
import protect.card_locker.async.TaskHandler
class LoyaltyCardEditActivityViewModel : ViewModel() {
var initialized: Boolean = false
var hasChanged: Boolean = false
var taskHandler: TaskHandler = TaskHandler();
var addGroup: String? = null
var openSetIconMenu: Boolean = false
var loyaltyCardId: Int = 0