2011-05-05 2 views
4

私は私は本当に奇妙なバグを見つけたと思います...しかし、それはちょうど私が聞いたことがない機能のsomekindすることができます。..私のアプリケーションでアンドロイド:FLAG_ACTIVITY_CLEAR_TOPとAndroid:launchMode =「singleInstance」

launchMode =「singleInstance」次のコードで特定のポイントに「クリーン」スタックにしてみてください:

Intent intent = new Intent(this, Xpto.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP 
      | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 

それはその活動に行く..しかし、ときに私はアンドロイドとAndroidManifest上の任意の活動を持っている場合あなたは戻る、それは前に戻ります。終了したはずです...

例:

A - > B - > C私はIntent.FLAG_ACTIVITY_SINGLE_TOPでA呼び出すCから次に

| Intent.FLAG_ACTIVITY_CLEAR_TOPはマニフェストにsingleInstanceを持ちます。それはAに行くが、それは正面にそれをもたらすだけで、CとBを終了しません。

誰かがこの動作を説明できますか?

私が呼び出すXptoクラスは、その時点でスタックのルートアクティビティです。

このスレッドを読んでから感謝

答えて

3

を:

http://groups.google.com/group/android-developers/browse_thread/thread/5eb400434e2c35f4

いるようです:上記の例では、アクティビティBの

「現在実行中のインスタンスが新たな意図を のいずれか受け取りますあなたはonNewIntent() メソッドでここからやり始めているか、それとも終了して新しいインテントで再開しています。 に起動モードを「マルチプル」(デフォルト)と宣言し、同じ意図で にFLAG_ACTIVITY_SINGLE_TOPを設定していない場合は、 が終了して再作成されます。他のすべての起動モードの場合、または FLAG_ACTIVITY_SINGLE_TOPが設定されている場合、このインテントは現在のインスタンスのonNewIntent() に配信されます。 「あなただけFLAG_ACTIVITY_CLEAR_TOPを複数のインスタンスにごlaunchModeを設定し、使用する必要があることを意味

。あなたが起動したときに、アクティビティのBとCが終了していない、説明したシナリオでは

Intent intent = new Intent(this, Xpto.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 

活動A(ましたアクティビティBとCを終了させるには、起動モードを複数に設定する必要がありますインスタンスを作成し、フラグFLAG_ACTIVITY_SINGLE_TOPを設定しないでください。

+0

それに対する答えはありませんでした。 – neteinstein

+0

私はあなたが説明したシナリオで、アクティビティA(これはルートアクティビティ)を開始したときにアクティビティのBとCが終了しないのはなぜか説明すると思います。私が説明しようとしたことは、ドキュメントが、singleInstanceの起動モードとフラグFLAG_ACTIVITY_SINGLE_TOPを設定すると、アクティビティBとCが完了しないことを説明していることです。アクティビティBとCを終了するには、起動モードを複数のインスタンスに設定し、フラグFLAG_ACTIVITY_SINGLE_TOPを設定しないでください。お役に立てれば。 – groffhibbitz

関連する問題