У меня есть почти идентичные фрагменты кода, показанные ниже.
В несвязанном разделе кода:
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.
Честно говоря, я понятия не имею, почему это может происходить.