Conversation
app/src/main/AndroidManifest.xml
Outdated
| android:name=".ActivityB" | ||
| android:label="ActivityB" | ||
| android:exported="false" | ||
| android:launchMode="singleTask"/> |
There was a problem hiding this comment.
@drugpamir , здесь singleTask сам по себе не поможет, если taskAffinity у активити одинаковый. Вот результат запуска активити Б с вашим вариантом:

Забегая вперед, скажу, что вы правильно догадались про флажки в запуске активити Б, но там нужно сочетание. Напишу ниже
| buttonToB = findViewById(R.id.button_a) | ||
| buttonToB?.setOnClickListener { | ||
| intent = Intent(this, ActivityB::class.java).apply { | ||
| addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) |
There was a problem hiding this comment.
Тут не хватает флажка FLAG_ACTIVITY_MULTIPLE_TASK. Тогда Б запустится в новом стеке, а аттрибут в манифесте не нужен.
app/src/main/AndroidManifest.xml
Outdated
| android:name=".ActivityD" | ||
| android:label="ActivityD" | ||
| android:exported="false" | ||
| android:launchMode="singleTask"/> |
There was a problem hiding this comment.
Тут тоже достаточно стандартного режима - см. ниже
|
|
||
| buttonOpenD = findViewById(R.id.button_open_d) | ||
| buttonOpenD?.setOnClickListener { | ||
| startActivity(Intent(this, ActivityD::class.java)) |
There was a problem hiding this comment.
@drugpamir , для того, чтобы очистить текущий стек от того, что в нем сейчас, можно воспользоваться сочетанием флагов:
FLAG_ACTIVITY_CLEAR_TASK и FLAG_ACTIVITY_NEW_TASK
|
|
||
| buttonCloseStack = findViewById(R.id.button_close_stack) | ||
| buttonCloseStack?.setOnClickListener { | ||
| intent = Intent(this, ActivityA::class.java).apply { |
There was a problem hiding this comment.
Тут я бы предложил воспользоваться функцией finishAffinity. История - это немного другая история :) Не имеет отношения к таскам и стекам, а только регулирует то, что у нас видно в списке последних приложений. А теперь вы понимаете, что там не приложения, на самом деле, а активити.

No description provided.