(лучший) Способы доставки контрольных сообщений поставщику пользовательского контента - PullRequest
1 голос
/ 06 октября 2010

У провайдера контента Android есть методы для обычных подозреваемых {вставка, удаление, запрос, обновление}, но если я хочу отправить контрольные сообщения, очевидного механизма не существует. Предположим, что одна из таблиц, управляемых потребностями, должна быть сброшена, очищена и перезагружена. Как это может быть сделано? У меня есть несколько подходов, каждый из которых кажется немного хакерским.

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

2) похитить контент-провайдер api. Можно создать фиктивную таблицу, в которой метод вставки (или обновления / запроса / удаления) будет вызывать недоступные в противном случае методы.

3) использовать множественное наследование, чтобы сделать контент-провайдера также услугой (или деятельностью). Это, вероятно, ближе всего к тому, что я хочу, но я не знаю, как это сделать. Это опасно, особенно если это была деятельность.

4) иметь пару сервис-контент-провайдер Аналогично (3), но, надеюсь, без бородавок. Служба будет иметь помощь для выполнения всех видов контроля. Например, загрузка справочных таблиц, очистка таблиц, очистка устаревших кортежей, ... Если бы это было сделано, служба, как служба будет запущена? поставщиком контента?

1 Ответ

1 голос
/ 06 октября 2010

3) невозможно в Java.

4) просто выгрузит ContentProvider и будет использовать API, предоставленный службой.

Также могут быть:

5) Пусть ContentProvider зарегистрирует BroadcastReceiver через getContext().registerReceiver() и отправит ему широковещательные сообщения для различных операций

Я не пробовал этого, но предполагая, что Context вернул getContext() поддерживает это, оно должно работать.

...