вызов .fini sh () в onBackPressed преформируется иначе, чем вызов его, где - PullRequest
1 голос
/ 04 февраля 2020

У меня есть почти идентичные фрагменты кода, показанные ниже.

В несвязанном разделе кода:

    thread {
         val result = Intent()
         this@Activity2.setResult(RESPONSE_SUCCESS_CODE, result)
         this@Activity2.finish()
    }

и в методе onBackPressed:

    thread {
        val result = Intent()
        this@Activity2.setResult(RESPONSE_CANCEL_CODE, result)
        this@Activity2.finish()
    }

Я ожидаю, что эти части кода будут функционировать одинаково, за исключением передачи другого кода результата в вызывающее действие. За исключением того, что первый фрагмент кода корректно возвращает нас к вызывающему действию, тогда как второй фрагмент кода возвращает нас к несвязанному действию, которое было полностью закрыто.

Таким образом, ожидаемый рабочий процесс является основным -> act1 -> back to main -> act2 -> back to main.

Если я не переопределяю функцию onBackPressed или вызываю фрагмент кода, отсутствующий в функции onBackPressed, я получаю ожидаемый рабочий процесс. Кроме того, если я запускаю инспектор макета в android studio, а в act2 он правильно не показывает никаких экземпляров act1, так как он был полностью закрыт.

Но если я вызываю кусок кода в функции onBackPressed, я получаю следующий рабочий процесс: main -> act1 -> back to main -> act2 -> act1.

Честно говоря, я понятия не имею, почему это может происходить.

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