Реализация AsyncTask - PullRequest
       2

Реализация AsyncTask

1 голос
/ 13 марта 2011

В моем приложении мне нужно сократить время вставки видео и других данных из базы данных.Я пытаюсь использовать концепцию AsyncTask в моем приложении.Но это дает ошибку в моей части вставки, когда я делаю это в doInBackground (). Другой класс выполняет вставку.

abc.insert (arguments);где abc - это объект моего класса базы данных.

Показанная ошибка - это nullpointerexception в моем классе, где выполняется вставка.

Есть ли какое-либо решение для этого?

спасибо,

niki

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

Если вы просто хотите добавить данные в свою базу данных в рабочем потоке без добавления обновления пользовательского интерфейса после добавления, используйте потоки Java, встроенные в AsynTask.

Единственная цель AsyncTask - выполнять дорогостоящие операции в фоновом режиме и обновлять пользовательский интерфейс после выполнения операции.

Как предполагает Arhimed, блокировка базы данных может быть проблемой в вашем случае, еслиВы запустили несколько AsyncTasks.

0 голосов
/ 13 марта 2011

Я не до конца понимаю ваш случай, но похоже, что вы стали жертвой проблемы синхронизации - несколько потоков вызывают код вставки.

Если это так, то единственное решение - использовать оператор Java synchronized вокруг кода вставки, например ::

public synchronized void insert() { /* code to insert */ }

или

private Object lock = new Object(); // a field of your DBHelper

// somewhere below in your DBHelper
synchronized (lock) {
     /* code to insert */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...