Цель
Я хотел бы задать пару вопросов относительно реализации решения для Android-приложения.Хорошая практика SQLite & ContentProvider
Контекст
У нас есть SQLite базы данных для нашего приложения. Мы также используем ContentProvider
, чтобы легко управлять изменениями в данных базы данных и получать уведомления, когда это произойдет.
Приложение имеет Activity
, которое содержит ViewPager
с 4 Fragment
. 2 из этих 4 Fragment
используют общие данные.
Выпуск
Допустим, мы храним данные кредитных карт пользователя. У него может быть несколько карт, сохраненных в базе данных, поэтому нам нужно знать, какой из них активен.
Я мог только подумать о 2 решениях для этого.
- Сохранить его на
Preferences
- Добавить активное поле в таблице кредитной карты
Пример 2 решения:
╔════════════════╦═════════════╦═══════════════╦════════╗
║ name ║ id ║ secret_number ║ active ║
╠════════════════╬═════════════╬═══════════════╬════════╣
║ personal visa ║ 02468024680 ║ 659 ║ true ║
║ company visa ║ 13579135791 ║ 362 ║ false ║
╚════════════════╩═════════════╩═══════════════╩════════╝
Я думаю, что второй из них лучше, так как ContentProvider
уведомит наш Fragments
, когда действует акт карта ive изменена, и они смогут отражать изменения в этот момент.
Вопросы
Однако, я не уверен, если это находится в пределах good practices
, так как это может привести к проблемам, например, наличие нескольких строк, помеченных как активного. Кроме того, я также хотел бы спросить, есть ли способ обновить все строки с помощью одного оператора sql, я имею в виду, active, а остальные - false.
Заранее спасибо.
Привет, добро пожаловать к переполнению стека. SO - это платформа Q & A для программирования, а не дискуссионный форум. Пожалуйста, прочтите это сначала: http://stackoverflow.com/help/on-topic –