При использовании SharedPreferences Я заметил, что могу сохранять и загружать значения в одном процессе и совершенно нормально извлекать их из другого процесса.
Основное действие:
Код: Выделить всё
override fun onStart() {
// ...
val prefs = getSharedPreferences(PREFERENCES_ID, Context.MODE_PRIVATE)
val editor = prefs.edit()
editor.putInt("TEST", 42)
editor.commit()
}
Код: Выделить всё
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
// ...
val prefs = getSharedPreferences(PREFERENCES_ID, Context.MODE_PRIVATE)
val retrieved = prefs.getInt("TEST", -1)
Log.d("Service", "Retrieved $retrieved") // prints "Retrieved 42"
}
Я также отмечаю, что такое поведение не происходит при удалении Android :process в манифесте, что наводит меня на мысль, что такое поведение вызвано разными процессами.
- Есть ли какая-то разница в как изменения передаются слушателям в различных процессах?
- Можно ли наблюдать эти изменения во всех процессах?
(Я признаю, что могу превратить свое приложение в единый процесс или реализовать какое-либо «измененное» сообщение через какой-либо другой IPC, например Messenger каждый раз, когда мой код создает измените настройки на SharedPreferences, однако для данного приложения это непривлекательные варианты.)
Подробнее здесь: https://stackoverflow.com/questions/592 ... -processes
Мобильная версия