Лучшая практика для использования одного SQLiteOpenHelper для использования многими ContentProviders

В мое приложение (SyncAdapter) я включил много ContentProviders для использования другими приложениями, и мне было интересно, уместно ли пытаться разделить один экземпляр SQLiteOpenHelper между ними для использования? Если так, то как?

Если это не подходит, считается ли это правильным (как показывают примеры) повторять создание экземпляра SQLiteOpenHelper в методе onCreate каждого ContentProvider; Кажется, должен быть лучший способ!

Достаточно ли в манифесте информации для операционной системы, чтобы создавать экземпляры ContentProviders без предварительного создания содержащего их приложения? Если это так, то я не могу держать статический SQLiteOpenHelper в классе, который расширяет приложение для извлечения ContentProviders.

Помогите!

1 ответ

Решение

Ответ состоял в том, чтобы объединить мои ContentProviders в один ContentProvider, который подключен для обработки моих различных URI / таблиц; Вот пример из Google. Таким образом, вы можете создать экземпляр вашего SQLiteOpenHelper и установить его в поле для ваших переопределенных методов, чтобы использовать его, опять же, см. Пример. Кстати, еще один хороший (в интересах наилучшей практики) шаблон, который я выбрал из этого кода, состоит в следующем: переопределить applyBatch, чтобы обернуть все, что он делает в транзакции. После этого используйте его и только его (через. ContentProviderOperations) всякий раз, когда вы хотите сделать любое постоянство; если вы сделаете это, вы можете пропустить транзакции из вашего фактического переопределенного обновления, удалить и вставить методы - потому что вы не будете использовать их напрямую! Последнее привлекает меня, поскольку упрощает мои методы вставки, обновления и удаления и обеспечивает возможность отката всей последовательности связанных изменений при возникновении исключения.

Другие вопросы по тегам