Поведение в зависимости от действия зависит от setOrientationScreen - PullRequest
0 голосов
/ 23 марта 2012

Я потратил 3 дня, пытаясь решить эту проблему:

  1. ActivityA запускает ActivityB и завершает работу.
  2. Пользователь нажимает кнопку «Выход» в ActivityB, и я вызываю финиш B.

Я поставил флаг NO_HISTORY на activityB. Также я поставил Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK при запуске activityB. В манифесте все действия находятся в режиме portrait.

Это прекрасно работает, когда начинаются действия без setScreenOrientation в onCreate.

Проблема появляется, когда я звоню setScreenOrientation. Это заставляет деятельность быть «возобновленной». И проблема с должным финишем начинается. Обычно вторая попытка с финишем не перезапускается activityA. В некоторых случаях, если activityB создается несколько раз - потеря фокуса и т. Д. Или вызов некоторых действий - несколько раз вызов Finish решает проблему :( Похоже, у меня есть несколько экземпляров (B), и я должен обойти их все.

Ответы [ 3 ]

0 голосов
/ 23 марта 2012

Для действия A поместите android: launchMode = "singleInstance" в манифесте. Когда начинается действие B и заканчивается A - из-за системы «единственного экземпляра» не запускайте действие A снова. :)

0 голосов
/ 23 марта 2012

добавьте этот атрибут в тег активности в файле манифеста Android

android: configChanges = "direction"

0 голосов
/ 23 марта 2012

Вы можете попробовать этот код

Intent intent = new Intent(this, Alertactivity.class);
this.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
this.finish();
...