У меня есть SyncAdapter, перегружающий onPerformSync. В этом методе я хотел бы получить доступ к общим настройкам, чтобы получить и установить настройки. Насколько я понимаю, для этого мне нужен доступ к контексту. SyncAdapter onPerformSync имеет аргумент пакета, и, возможно, я мог бы отправить контекст таким образом.
В аналогичной проблеме у меня есть другой базовый класс (не служба или действие), для которого я также заинтересован в использовании sharedPreferences. Для этого мне нужно либо передать контекст методу в классе, либо создать его экземпляр с контекстом, который затем сохраняется как частный член.
Я понимаю, что в обоих этих случаях сохранение и использование контекста за пределами жизненного цикла действия или службы, связанной с контекстом, может привести к утечке памяти.
В моем случае мое приложение может начинаться либо с широковещательного приемника, либо с основной активности. Широковещательный приемник запускает фоновый процесс, а основное действие просто запускает основное действие. Тот, который открывается первым, регистрирует периодические обновления SyncAdapter и открывает другой класс. Итак, если бы я передал контекст вызывающего действия или службы, что произойдет, если один из них затем закроется? SyncAdapter или базовый класс будут использовать устаревший контекст и... утечку памяти? Или контекст вернется к тому, что осталось работающим?
Я также видел решение этого: (Статический способ получить "Контекст" на Android ?), но исправит ли это что-нибудь? Тогда у меня будет контекст действия, контекст приложения и контекст службы. Точно такая же проблема? SyncAdapter может в конечном итоге удерживать закрытый контекст, не так ли?
Основываясь на первом ответе здесь (контекст приложения SharedPreferences и контекст действия), я У меня возник соблазн использовать одноэлементное приложение, указанное в предыдущей ссылке, но я хочу убедиться. Спасибо