Теперь в одночасье оказывается, что объект Application иногда может быть пустым.то есть я использую приложение, ухожу и засыпаю, возвращаюсь к тестированию утром, и все кеши json пусты.
Ваш процесс, скорее всего, был прерван.См. документацию и документацию .
Что мне нужно сделать, это обнаружить, когда Android сплющил кэш
Вы не будете уведомлены о завершении вашего процесса.
или хотя бы знаете минимальное время, в течение которого Android будет хранить расширение приложения
Ваш процесс можетбудет завершен через миллисекунды после того, как он покинет передний план.
[Application
работает] отлично как хранилище данных
Только для данных, которые вы можете легко перезагрузить из постоянных данныхstore.
[Application
] работает работает в многопоточности
Только если вы добавите свою собственную логику синхронизации потоков.В свойствах и функциях Application
нет ничего волшебного, что делает их поточно-ориентированными.
, где нет места для хранения изменяемых данных - это лучшая альтернатива
Любые данные, которые вы хотите сохранить, должны храниться на диске (база данных, SharedPreferences
или другие типы файлов) или на сервере.
, поэтому у меня остается вопрос, как их смягчить
Любые данные, которые вы хотите сохранить, должны храниться на диске (база данных, SharedPreferences
или другие типы файлов) или на сервере.Используйте кеши в памяти в качестве кешей.
, потому что такие вещи, как SQLite, бесполезны, они не безопасны для потоков
Если вы используете один и тот же экземпляр SQLiteDatabase
для своих операцийSQLite является поточно-ориентированным.
, что фактически делает невозможным параллельное выполнение чего-либо
Вы, безусловно, можете использовать другие постоянные хранилища данных, если обнаружите, что SQLiteнеприятен.