1

У меня есть пользовательский контент-провайдер, и мне нужно вставить одну запись в то время, когда пользователь нажимает на какую-то кнопку, и это не так уж часто. Мне было интересно, должен ли я делать эту вставку в фоновом потоке (AsynchTask и т. Д.), Или мне нужно просто вставить его в поток графического интерфейса? Сразу после вставки мне нужно обновить GUI. Если я должен сделать это в фоновом режиме, то какой лучший подход ... Думаю, asynctask - лучший выбор. Заранее спасибоВставьте одну запись в sqlite android с помощью contentprovider

+1

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

ответ

2

Советуем не обращаться к вашему провайдеру по основной теме. Используйте CursorLoader для запросов. Для модификации используйте объекты ContentProviderOperation и ContentResolver.applyBatch(). Эти классы обрабатывают все фоновые работы для вас.

ASyncTask - это гораздо более универсальный класс.

+0

Некоторые примеры использования ContentProviderOperation и ContentResolver.applyBatch() были бы замечательными – eddy

0

Я. вы правы. Использование Async Task для управления операциями БД - хороший подход. Но решение выбрать конкретный подход зависит от количества данных, которые вы запрашиваете или вставляете из/в базу данных.

Смежные вопросы