Почему OnResume сбрасывает значения в моем объекте SharedPreference? - PullRequest
0 голосов
/ 24 января 2019

Когда пользователь нажимает кнопку, он переключает логическое значение в объекте sharedpreference на true / false. Когда я в дальнейшем получаю доступ к этому состоянию в состоянии, оно сохраняется и работает нормально. Однако, когда я нажимаю кнопку «Назад» в Android, чтобы приостановить приложение и возобновить работу приложения, объект SharedPreference переключается на true. Даже при том, что это было в false, когда я исследовал метод onPause () с отладчиком.

В основном я пытался исследовать состояние объекта SharedPreference в методах onPause, onCreate и onResume моей деятельности. Я не уверен, почему значение возвращается к значению по умолчанию (true) во время метода onCreate.

override fun onPause() {
    super.onPause()

    val p = pauseButtonTracker.pauseButtonStateAtResume() // value is false 


}



override fun onResume() {
    super.onResume()
    val q = pauseButtonTracker.pauseButtonStateAtResume() // value is switched to true 

//...

// объект, который управляет объектом общих предпочтений, о котором я говорил

class PauseButtonTracker(context: Context) { 
    private val PAUSE_BUTTON_TRACKER = "PAUSE_BUTTON_TRACKER"
    private val WAS_AT_RESUME = "WAS_AT_RESUME"
    private val pauseTracker = context.getSharedPreferences(PAUSE_BUTTON_TRACKER, 0)
    private val pauseTrackerEditor = pauseTracker.edit() 

    fun pauseButtonStateAtResume(): Boolean{
        return pauseTracker.getBoolean(WAS_AT_RESUME, true)
    }

    fun switchPauseButtonStateToPause(){ 
        pauseTrackerEditor.putBoolean(WAS_AT_RESUME, false)
        pauseTrackerEditor.apply() 
    }

    fun switchPauseButtonStateToResume(){
        pauseTrackerEditor.putBoolean(WAS_AT_RESUME, true)
        pauseTrackerEditor.apply()
    }


}

значение, содержащееся в,

pauseButtonTracker.pauseButtonStateAtResume()  

должен был остаться ложным, когда вызывается onResume, но по какой-то причине он переключается в true.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Woops, решение было просто поставить отладчик на

fun switchPauseButtonStateToResume(){
    pauseTrackerEditor.putBoolean(WAS_AT_RESUME, true)
    pauseTrackerEditor.apply()
}

Чтобы узнать, вызывали ли его по какой-либо причине.

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

0 голосов
/ 24 января 2019

На первом занятии, где вызывается onPause(),

ты должен был позвонить switchPauseButtonStateToPause

до val p = pauseButtonTracker.pauseButtonStateAtResume()

и затем вызовите метод onResume().

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