Skip to content

Сделал первую активити#49

Open
nazarovNV wants to merge 12 commits intoOtus-Android:masterfrom
nazarovNV:master
Open

Сделал первую активити#49
nazarovNV wants to merge 12 commits intoOtus-Android:masterfrom
nazarovNV:master

Conversation

@nazarovNV
Copy link

No description provided.

<activity
android:name=".ActivityA"
android:exported="true"
android:launchMode="singleInstance">
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nazarovNV, тут singleInstance избыточен. При таком флаге, активити будет одна на. таск, и других активити в этом таске не создать. Вот тут есть неплохая табличка по режимам запуска. Посмотрите, пожалуйста.
А это не соответствует заданию 2.1:

предусмотрите возможность открывать другие Activity в том же стеке где расположена ActivityA

<activity
android:name=".ActivityB"
android:exported="false"
android:launchMode="singleTask"/>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nazarovNV, здесь singleTask не нужен. Сингл-таск регулирует логику создания ТАКОЙ же активити в текущем таске. По заданию, они открываются обычным способом

setContentView(R.layout.activity_a)
openBbutton = findViewById(R.id.openB)
openBbutton?.setOnClickListener {
val intent = Intent(this, ActivityB::class.java)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чтобы открыть активити в новом стеке, мы можем воспользоваться сочетанием флажков:
FLAG_ACTIVITY_MULTIPLE_TASK и FLAG_ACTIVITY_NEW_TASK.
Еще вариант - задать taskAffinity в манифесте

openDbutton = findViewById(R.id.openD)
openDbutton?.setOnClickListener {
val intent = Intent(this, ActivityD::class.java)
finishAffinity()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nazarovNV, кроме finishAffinity() нам подойдет пара флажков:
FLAG_ACTIVITY_NEW_TASK и FLAG_ACTIVITY_CLEAR_TASK.
Это так, на всякий случай. Кроме того, finishAffinity не работает на старых андроидах. Надеюсь, не придется с ними столкнуться :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments