Android завершает все другие действия?

#android #android-activity #android-intent

#Android #android-активность #android-намерение

Вопрос:

На данный момент у меня возникла проблема, и я бы оценил свежий взгляд другого человека на проблему.

У меня есть 3 отдельных действия.

Главная

Вопрос

Ответ

Из дома вы можете перейти только к вопросу, из вопроса вы можете перейти к ответу. Теперь из ответа вы можете вызвать меню и вернуться на главный экран. На этом этапе вопрос завершается с помощью обратного вызова и ответа с помощью finish (), но самое первое действие на главном экране все еще существует, и если вы нажмете кнопку «Назад», оно снова вернется к тому же экрану.

Это означает, что если я открыл вопрос на главном экране, затем перешел к ответу и из меню перешел на главный экран. Если бы я сделал это несколько раз, было бы запущено 2, 3 или более домашних экрана.

Есть ли что-нибудь, что я могу запустить, чтобы удалить все другие действия из моего запущенного приложения?

Извините, если это немного сбивает с толку, у меня тоже болит голова при одной мысли об этом. Если вы хотите получить более четкое разъяснение по этому поводу, я постараюсь изо всех сил.

Комментарии:

1.вероятно, вы захотите изучить возможность добавления флагов в свои намерения при запуске каждого действия. смотрите developer.android.com/reference/android/content /… developer.android.com/reference/android/content /…

2. Вы также можете добавить флаги в манифест. Я предлагаю изучить singleInstance и singleTask (я думаю, они называются)

3. @Falmarri это сработало отлично. Если вы хотите отправить это в качестве ответа, я приму это

Ответ №1:

Перед finish() ответом установите какой-нибудь флаг (global var, shared pref, на ваш выбор), чтобы уведомить вопрос о том, что он также вызывается finish() . Это вернет вас на главный экран в чистом виде.

Ответ №2:

Вы можете остановить более одного запущенного экземпляра действия, используя флаги намерения, например

 Intent i = new Intent(this, ActivityA.class); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i);
  

смотрите: установленные флаги общедоступных намерений (int flags)