В моем приложении для Android работает AsyncTask, который работает довольно долго, чтобы обновить базу данных при запуске приложения. Мне нужно обернуть это в транзакции, чтобы откатить вещи, если пользователь выходит из приложения до завершения задачи. Однако, поскольку обертывание кода в транзакции блокирует пользовательский интерфейс, пока задача не будет завершена. Почему это так, поскольку код уже выполняется в отдельном потоке?
Я использую ORMLite, и это, в основном, оболочка для транзакции, код для обновления БД идет внутрь call () .., до добавления кода для обновления БД внутри транзакции не было блокировки пользовательского интерфейса. ...
public ConnectionSource source;
@Override
protected Boolean doInBackground(Context... params) {
try {
TransactionManager.callInTransaction(source, new Callable<Void>() {
public Void call() throws Exception {
return null;
}
});