База данных заблокирована и AsyncTask - PullRequest
0 голосов
/ 31 января 2012

Есть ли возможность создать поток, который предназначен только для отображения диалога выполнения во время работы метода, без помещения самой операции в поток, как это делается в AsyncTask ?

Допустим, первая строка метода - это что-то вроде startThread с чем-то вроде ProgDialog.show(), последняя строка - что-то вроде stopThread с чем-то вроде ProgDialog.dismiss().

Причина, по которой я спрашиваюэто то, что я попробовал это с AsyncTask , и он работал хорошо, пока метод базы данных, который я вызывал внутри AsyncTask , не пытался выполнять операции с базой данных, в то время как другие операции с базой данных в основном пользовательском интерфейсееще не были закончены (или пытались начать).

Итак, я получил исключение, что база данных заблокирована.Я чаще всего работаю с транзакциями в sqlite для согласованности и производительности, что также необходимо в этом случае.

1 Ответ

1 голос
/ 31 января 2012

есть ли возможность создать поток, который будет отображать только диалог выполнения во время работы метода, без помещения самой операции в поток, как это делается в AsyncTask?Допустим, первая строка метода - это что-то вроде startThread с чем-то вроде ProgDialog.show (), последняя строка - что-то вроде stopThread с чем-то вроде ProgDialog.dismiss ().

Нет, потому что единственный поток, которыйможет показывать и закрывать диалоговое окно, являющееся основным потоком приложения, и вы специально не хотите блокировать этот поток.

Это работало хорошо, пока метод базы данных, который я вызывал в AsyncTask, не пытался создать базу данных.операции, в то время как другие операции с базой данных в основном пользовательском интерфейсе еще не завершены (или не пытались начать).

Переместите «другие операции с базой данных» из основного потока приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...