Не удается установить FLAG_ACTIVITY_SINGLE_TOP и FLAG_ACTIVITY_CLEAR_TOP в одном назначении? - PullRequest
5 голосов
/ 11 апреля 2011

Я использую флаги FLAG_ACTIVITY_SINGLE_TOP и FLAG_ACTIVITY_CLEAR_TOP, чтобы вернуться к моей предыдущей "стандартной" активности.Я использую FLAG_ACTIVITY_SINGLE_TOP, чтобы предотвратить повторное создание нового экземпляра.Но я обнаружил, что флагом FLAG_ACTIVITY_SINGLE_TOP пренебрегают, а действие завершается и воссоздается.

  • Вот что я нашел в документах. FLAG_ACTIVITY_CLEAR_TOP : в нем говорится, что вы можете добавить FLAG_ACTIVITY_SINGLE_TOP при использовании FLAG_ACTIVITY_CLEAR_TOP для предотвращения "завершения - воссоздания".

  • Вот еще один документ. FLAG_ACTIVITY_CLEAR_TOP :

    Примечание. Если режим запуска назначенного действия «стандартный», он также удаляется из стека и на его месте запускается новый экземпляр для обработкивходящее намерение.Это потому, что новый экземпляр всегда создается для нового намерения, когда режим запуска «стандартный».

Я неправильно понял первый документ?

Ответы [ 3 ]

5 голосов
/ 14 августа 2011

Документация предполагает, что FLAG_ACTIVITY_CLEAR_TOP - это все, что вам нужно установить.Но на самом деле вы ДОЛЖНЫ установить оба параметра, чтобы предотвратить повторное создание действия.

В моем случае это помогло: (Основным является действие, к которому я хотел вернуться)

  Intent tabIntent = new Intent(this, Main.class);
  tabIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  startActivity(tabIntent);
2 голосов
/ 11 апреля 2011
0 голосов
/ 06 января 2014

Отметьте это.
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_SINGLE_TOP)

...