2013-06-04 1 views
-1

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

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

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

Помощь!

+0

Почему вам нужно много контент-провайдеров для доступа к 1 базе данных? (Приложение всегда создается первым и всегда существует в действиях, услугах, широковещательных приемниках и поставщике контента) – njzk2

+0

В общем, у меня есть ContentProvider для каждой таблицы в базе данных. Откуда вы знаете, что андроид сначала создает приложение? – fr1550n

+0

, потому что это то, что говорит документация для класса приложения. – njzk2

ответ

0

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