Вы можете сделать это, используя SQLite или настройки.Хотя ... то, что вы хотите сделать, довольно просто, так зачем вам заботиться о создании таблицы, создании SQliteOpenHelper
объектов, проектировании таблицы и т. Д. Подход предпочтений проще.
Итак.... что здесь наиболее важно, так это то, как вы определяете свои флажки.Если у вас есть только 34 статических флажка (то есть они не изменят свой порядок), и они находятся в массиве (что было бы идеально), у вас все просто.
Как вы, возможно, знаете, редактор предпочтений неразрешить сохранять массивы.Таким образом, у вас есть несколько вариантов:
- Сохранение каждого состояния в другой предпочтительный слот (например:
putBoolean("checkbox2", true)
; putBoolean("checkbox3", false)
; т. Д.) - Сохранение всех состояний в строку:
putString("checkboxes_state", "10101011100011010")
;таким образом, у вас будет строка с 34 символами, каждый символ представляет состояние. - Если вы хотите повысить эффективность, вы можете представить все состояния с простым
long
, равным или ниже 17179869183. Например, putLong("checkboxes_state", 17179869183)
будет означать, что все флажки выбраны (потому что его двоичное представление 1111111111111111111111111111111111).Дополнительные примеры: - 12159999103 = 1011010100110010101101110001111111
- 1 = 0000000000000000000000000000000001, что означает, что выбран только последний флажок.
Редактировать
Что касается вашего вопроса о том, почему последний является более эффективным, позвольте мне кратко объяснить.Первый подразумевает использование 34 слотов настроек (на самом деле я не знаю, как они хранятся; надеюсь, команда Android позаботилась о производительности).Второй подход будет использовать строку из 34 символов;поэтому минимальный размер объекта String составляет:
minimum String memory usage (bytes) = 8 * (int) ((34 * 2 + 45) / 8) = 113 bytes
Это означает, что строка такого удлинения займет не менее 113 байт .С другой стороны, использование только одного long займет всего 8 байт .Чем меньше байт для работы, тем быстрее будет работать ваше приложение (поскольку Android придется обрабатывать и сохранять меньше байтов).