Android: должен ли асинхронный доступ к базе данных в приложении? - PullRequest
2 голосов
/ 26 октября 2011

Я создаю приложение, которое использует базу данных SQLite для хранения данных. Иногда мое приложение зависает при переключении между действиями, которые обращаются к базе данных, особенно когда запускаемое действие обращается к базе данных с помощью метода onCreate ().

Должен ли я:

  • Доступ к базе данных с помощью асинхронной задачи или аналогичной
  • Использовать какой-нибудь конвейер для управления запросами к базе данных?

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

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 26 октября 2011

Да, вы должны использовать асинхронный доступ, это лучшая практика.SDK содержит AsynchTask специально для этого.

BuyAsyncTask extends AsyncTask<Item, Void, Item> {
    @Override
    protected Item doInBackground(Item... params) {
        ..use DB here
    }

    @Override
    protected void onPreExecute() {
        ..some easy operation befor start thread
    }

    @Override
    protected void onPostExecute(Item resultTask) {
        ..do what you want, thread is finish
    }

}
3 голосов
/ 29 октября 2011

У меня есть лучшее решение:

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

Пример конвейерной обработки здесь: http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/

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