Conversation
app/src/main/AndroidManifest.xml
Outdated
| <activity | ||
| android:name=".ActivityA" | ||
| android:exported="true" | ||
| android:launchMode="singleInstance"> |
There was a problem hiding this comment.
@nazarovNV, тут singleInstance избыточен. При таком флаге, активити будет одна на. таск, и других активити в этом таске не создать. Вот тут есть неплохая табличка по режимам запуска. Посмотрите, пожалуйста.
А это не соответствует заданию 2.1:
предусмотрите возможность открывать другие Activity в том же стеке где расположена ActivityA
app/src/main/AndroidManifest.xml
Outdated
| <activity | ||
| android:name=".ActivityB" | ||
| android:exported="false" | ||
| android:launchMode="singleTask"/> |
There was a problem hiding this comment.
@nazarovNV, здесь singleTask не нужен. Сингл-таск регулирует логику создания ТАКОЙ же активити в текущем таске. По заданию, они открываются обычным способом
| setContentView(R.layout.activity_a) | ||
| openBbutton = findViewById(R.id.openB) | ||
| openBbutton?.setOnClickListener { | ||
| val intent = Intent(this, ActivityB::class.java) |
There was a problem hiding this comment.
Чтобы открыть активити в новом стеке, мы можем воспользоваться сочетанием флажков:
FLAG_ACTIVITY_MULTIPLE_TASK и FLAG_ACTIVITY_NEW_TASK.
Еще вариант - задать taskAffinity в манифесте
| openDbutton = findViewById(R.id.openD) | ||
| openDbutton?.setOnClickListener { | ||
| val intent = Intent(this, ActivityD::class.java) | ||
| finishAffinity() |
There was a problem hiding this comment.
@nazarovNV, кроме finishAffinity() нам подойдет пара флажков:
FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TASK.
Это так, на всякий случай. Кроме того, finishAffinity не работает на старых андроидах. Надеюсь, не придется с ними столкнуться :)
No description provided.