Каков идеальный вариант использования Room.inMemoryDatabaseBuilder ()? - PullRequest
0 голосов
/ 05 марта 2019

Итак, я создаю это приложение, в котором содержится много личной информации и данных, которые не следует сохранять в устройстве, чтобы избежать проблем с безопасностью.Когда я узнал о Room, я столкнулся с этим Room.inMemoryDatabaseBuilder(), в котором в документации указано:

Создает RoomDatabase.Builder для базы данных в памяти.Информация, хранящаяся в базе данных в памяти, исчезает при завершении процесса.Как только база данных построена, вы должны сохранить ссылку на нее и использовать ее повторно.

Мне было интересно, будет ли это идеальным вариантом использования для моей ситуации.Поскольку данные будут существовать только в памяти и не будут храниться в устройстве.

Это кажется хорошей идеей.Меня беспокоит только то, что я еще не видел реализацию этого в реальном приложении.Единственный сценарий использования, который я видел в этом Room.inMemoryDatabaseBuilder(), использовался для тестирования (поэтому вам не нужно беспокоиться об очистке базы данных при каждом запуске теста).

Кто-нибудь может дать какой-нибудь совет?Это будет высоко ценится.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Я разместил этот же контекстный вопрос в блоге @Florina Muntenescu здесь

Ее ответ был:

Привет, Да, его можно использовать для любогослучай использования, который требует, чтобы данные были сохранены только в памяти.Тестирование является одним из них.

Таким образом, в принципе, Room.inMemoryDatabaseBuilder() может использоваться для других случаев использования, когда данные должны храниться только в памяти.

0 голосов
/ 05 марта 2019

Room.inMemoryDatabaseBuilder() был разработан в основном для тестирования.Я бы никогда не использовал его в работе, потому что вы не можете знать, когда процесс будет убит системой, поэтому любое использование, которое выходит за рамки расширенного структурированного кэша или аналогичного, вероятно, не является хорошей идеей.

Я думаю, выУ меня есть множество вариантов решения проблемы без использования этого API.

Вы можете использовать один или несколько из следующих параметров:

  1. Шифровать базу данных с использованием SafeRoom и сохраните его в личной папке приложения.

  2. Используйте Android Keystore для хранения личной информации или паролей для доступа к личной информации.

  3. Заблокируйте некоторую чувствительную часть вашего приложения, если устройство рутировано с использованием SafetyNet api

  4. Не храните конфиденциальные данные в базе данных навсе, но запрашивать их на сервере во время выполнения только по явному запросу пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...