SharedPreferences
считываются с диска при первом обращении к ним, а затем кэшируются в памяти, следовательно, ваш DiskReadViolation
в строгом режиме.
При выполнении всех операций ввода-вывода как неблокирующих отосновной поток идеален, даже если вы включите строгий режим в Службах Google, вы увидите красные вспышки при запуске приложения, так что вы не сможете легко обойти нарушение строгого режима.
Главное дляВы должны быть обеспокоены длительными HTTP-запросами или длительными операциями с базами данных, выполняющимися в главном потоке - их следует избегать, а решения включают использование чего-то вроде AsyncTask
, RxJava или сопрограмм Kotlin.
На данный момент SharedPreference
и связанный с ним setPreferenceFromResource
имеют режимы работы, которые вы не контролируете, и поэтому вряд ли вы улучшите ситуацию, добавив асинхронный код вокруг них.