Возвращаясь к нескольким действиям, не разрушая нижнюю - PullRequest
1 голос
/ 20 апреля 2019

Я сделал простой пример с 3 видами деятельности:

  1. ActivityA

  2. ActivityB

  3. ActivityC

На каждой из них есть только одна кнопка.

  • Кнопка включения ActivityA открывает ActivityB

        val intent = Intent(this, ActivityB::class.java)
        startActivity(intent)
    
  • Кнопка включения ActivityB открывает ActivityC

        val intent = Intent(this, ActivityC::class.java)
        startActivity(intent)
    
  • Кнопка включения ActivityC должна вернуться вActivityA но уничтожение ActivityB в процессе

        val intent = Intent(this, ActivityA::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
        startActivity(intent)
    

Он делает то, что я хочу, и весь поток выглядит так при регистрации:

ActivityA onCreate()
ActivityA button clicked
ActivityB onCreate()
ActivityB button clicked
ActivityC onCreate()
ActivityC button clicked
ActivityB onDestroy()
ActivityA onDestroy()
ActivityA onCreate()
ActivityC onDestroy()

Проблема этого решения заключается в том, что ActivityA воссоздается (уничтожается и создается). Есть ли способ просто возобновить его вместо этого?

Отказ от ответственности: Это, конечно, просто упрощенный случай.Из-за нескольких причин в моем приложении я бы предпочел избегать использования onActivityResult() и finish() при подходах клика.Мне нужно сохранить правильное поведение кнопки возврата.

1 Ответ

2 голосов
/ 20 апреля 2019

Вы делаете это почти правильно. Чего вам не хватает (чтобы избежать воссоздания активности), так это флаг FLAG_ACTIVITY_SINGLE_TOP.

val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)

Подробнее об этом здесь

...