Завершение вызова активности в onPause падает при изменении ориентации - PullRequest
0 голосов
/ 16 марта 2011

Чтобы сохранить ресурсы и предотвратить утечки памяти, я вызываю метод finish () в событии onPause всякий раз, когда приложение переходит от одного действия к другому. Я думаю, что это работает нормально, но когда я пытаюсь повернуть экран, приложение вылетает - ошибка «Дублировать запрос завершения» Как я могу предотвратить это, есть ли в событии onPause способ определить, собирается ли приложение перейти к следующему действию или просто меняет ориентацию? Есть ли лучший способ для сохранения памяти, чем использовать Finish?

Спасибо за помощь!

Ответы [ 3 ]

13 голосов
/ 16 марта 2011

Вы можете попробовать флаг Intent.FLAG_ACTIVITY_NO_HISTORY . Это завершит ваши действия, как только перед ними появится новое действие.

Вы можете поместить это в намерение, когда начинаете занятие:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

или вы можете установить его в своем манифесте, чтобы ваша активность всегда имела этот флаг:

android:noHistory="true"

как атрибут в теге <activity ... /> этого действия.

Таким образом, вы можете не пытаться звонить finish в onPause. Я думаю, что это лучше, чем пытаться точно определить, когда фреймворк сам вызовет finish.

2 голосов
/ 16 марта 2011

Проверьте, завершено ли ваше действие с this.isFinishing () (где это ваше действие)?

1 голос
/ 16 марта 2011

Просто выстрел в темноте, но вы вызываете super.onPause () в своей реализации onPause?

...