2010-12-03 6 views
2

は、私は次のシナリオを持って回転が続いている間違った意図を返します。 singleTopのlaunchmodeとしてgetIntentはsetIntentが

私は別の会話の間で切り替えると、私は別の会話の間で切り替えると、私はこれを行います:新しい意図でonActivityを呼び出して:onPauseが呼び出され、続いてonNewIntentが続きます。setIntent、onResume 。 onResumeでは、私は新しい意図を得ています。

は、その後、私は向きを変更:onPauseも古い意図

を持ってonResume、続く、getIntentは古い意図を持っているのonCreate続い正しい意図を返します。この時点で、onDestroyが続く、と呼ばれています私はこれを見つけました - >http://groups.google.com/group/android-developers/browse_thread/thread/7f0389f349e1ee3bこの動作を説明するが、アンドロイド2.2で私のHTCの欲望では発生しません、エミュレータを使用して1.5で発生しましたが、1.6ではない

私の質問: 1.5で正常ですか?もしそうなら、私はどのようにこれが再び起こらないように活動の振る舞いを変えることができますか?

私はlaunchtodeをsingletopからstandardに変更することができますが、これはアンドロイド1.6+にも影響します。これは、singleTopでは会話の変更が速くなる(onPauseとonResumeだけが呼び出される)ため、 onCreateとonDestroyも呼び出されます...

多分、私がまだ見つけていないインテントフラグでできることがあります。フラグが変更されたので、 "if sdk is 3"チェックができます読書のための...

おかげで、ダニー

答えて

2

あなたはおそらくをオーバーライドすることでそれを回避することができますを入力し、最新のインテントを返します。getLastNonConfigurationInstance()を使用して取得できます。

+2

答えていただきありがとうございます。私はこれを試してみたいと思いますが、onRetainNonConfigurationInstance()のAPIの説明には「この関数は純粋に最適化として呼び出されており、呼び出されている必要はありません。その部分に頼るのではなく、より良い解決策を望みます。 – Danny

+0

私はあなたの解決策を試してみませんか? – Danny

関連する問題