getIntent возвращает неверное намерение, когда за setIntent следует вращение - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть следующий сценарий:

У меня есть активность чата, по своему намерению он получает адрес электронной почты контактного лица, для которого отображаются сообщения, у операции есть singleTop в качестве режима запуска

Перемещая палец по экрану, я переключаюсь между разными разговорами, я делаю это, вызывая startActivity с новым намерением: вызывается onPause, затем onNewIntent, в котором я выполняю setIntent, а затем onResume.В onResume я получаю новое намерение, пока все хорошо.

Затем я меняю ориентацию: вызывается onPause, затем onDestroy, в этот момент getIntent возвращает правильное намерение, за которым следует onCreate со старым намерением.за ним следует onResume, который также имеет старое намерение

Я нашел это -> http://groups.google.com/group/android-developers/browse_thread/thread/7f0389f349e1ee3b, чтобы объяснить это поведение, но это не происходит по моему желанию HTC с Android 2.2, используяЭмулятор Я обнаружил, что это происходит на 1.5, но не на 1.6

Так что мой вопрос: это нормально на 1.5?Если так, как я могу изменить поведение действия, чтобы это больше не повторилось?

Я знаю, что могу изменить режим запуска с singleTop на стандартный, но это также повлияет на Android 1.6+, чего я не делаюхочу, потому что с singleTop смена разговора происходит быстро (вызываются только onPause и onResume), также вызываются стандартные onCreate и onDestroy ...

Может быть, я могу что-то сделать с флагами намеренийПока не найдено, флаги, которые я изменяю в коде, чтобы иметь возможность проверить, «если SDK равен 3» ...

Спасибо за чтение, Дэнни

1 Ответ

2 голосов
/ 03 декабря 2010

Вы можете обойти это, переопределив onRetainNonConfigurationInstance() и вернуть последнее намерение, которое затем можно получить с помощью getLastNonConfigurationInstance().

...