Android: SQLite: загрузка просмотров с данными, запрошенными IntentService

58
6

Я знаю, что Activity может создать намерение и отправить его в IntentService.

Я знаю, что IntentService, выполнив запрос, может отправить сообщение обратно в вызывающую активность.

Я знаю, что сообщение, отправленное из IntentService в вызывающую активность, может содержать Bundle [setData (Bundle b);]

ВОПРОС: Может ли сообщение, отправленное из IntentService в вызывающую активность, содержать Bundle/Cursor произвольного размера (скажем, 169 записей)?

спросил(а) 2013-04-30T04:15:00+04:00 7 лет, 6 месяцев назад
1
Решение
-4

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

Теперь я могу загружать свои представления из QUERYing SQLite db И принимать пользовательские данные из представлений активности и вставлять данные в SQLite db с использованием того же IntentService (один IntentService для каждой таблицы в базе данных SQLite, не считая пользовательских классов триггеров [все действия связанные с одной и той же таблицей, используют тот же IntentService])!

Когда IntentService отвечает на вызывающую активность с использованием класса Message, я заполняю Message связкой, содержащей двумерный массив Serializable [Bundle.putSerializable("Label", 2DArray)], возвращаемый из SQL-запроса db.

В Activity Activity массив преобразуется в массив, содержащий пользовательский класс с двумя полями, который затем привязан к пользовательскому ArrayAdapter.

Notifiers необходимы, потому что каждый раз, когда вызывается Activity.onResume(), представления обновляются с последними данными.

ответил(а) 2013-05-01T18:09:00+04:00 7 лет, 6 месяцев назад
42

Курсор не имеет возможности... Поэтому он, вероятно, не может быть передан как часть пакета.

Как правило, шаблон предназначен для IntentService для изменения записи в общей модели (возможно, базы данных или даже полного поставщика контента), которые затем наблюдаются через Loaders, заданные для Uris, представляющих интерес в этой модели.

И нет, использование Loaders with Cursor не обязательно означает, что вам нужно написать контент-провайдера, но это поможет, если вы это сделаете.

ответил(а) 2013-04-30T07:28:00+04:00 7 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема