2016-09-08 14 views
0

アプリケーション内で1つのアクティビティの最大インスタンス数を設定する方法が見つかっていないようです。基本的に、私はそれが2の最大を持っていたならば、それはそれのように見えるようにしたいです:Androidバックスタック内のアクティビティインスタンスの最大数

A - > B - > B

、ユーザーが同じ活動の他を開始しようとした場合、それは置き換えられます最近の「B」は最初のものだけ残しています。ただし、「B」が1つしかない場合は、2つ目の「B」を作成してください。 2つの 'B'アクティビティがある場合にのみ、 'B'の置換が開始されます。

クリアトップや並べ替えのようなアクティビティが1つしかないことを確認するオプションがたくさんありますが、これは可能ではないようです。誰もこれを試しましたか?一般的に

+0

Bインスタンスの数を記録します。ユーザーがあなたの最大値に達すると、通常は新しいBを開始するポイントです。フォアグラウンドにある場合は既存のBの内容を更新し、フォアグラウンドにない場合は 'FLAG_ACTIVITY_REORDER_TO_FRONT'を追加してください。 。または、1つのBのみを使用し、フラグメント数とバックスタックを最大カウントトラッキングに使用します。または、Bを1つだけ使用し、BACKイベントを自分で処理します。 – CommonsWare

+0

間違っていない限り、使用されていないアクティビティは一時停止されます。つまり、アクティビティBに移動すると、アクティビティAは一時停止されます。私はあなたが同じ活動の複数の実行を持つことができるとは思わないが、代わりにそれらをコピーすることができますので、同じ活動のクローンがある – Tasos

答えて

0

あなたが対処するかIntentフラグのいずれかを使用してActivityの任意の特定のインスタンスに戻ることはできませんので、Activityの複数のインスタンスを作成することは、管理が非常に困難です。あなたのアプリや要件はわかりませんが、次のアイデアの1つを使って再構築することを検討してください。

  • アクティビティのインスタンスを2つ以上作成しないでください。既存のインスタンスを毎回再利用するには、Intent.FLAG_REORDER_TO_FRONTを使用してください。
  • 代わりのBからBを開始し、ちょうどBの同じインスタンスを再利用し、ちょうどあなたが新しいActivity(アニメーショントランジションや何でも)を作成しているような錯覚を与えて、その中のデータを変更
  • Activityのコピーを作成します。 (既存のクラスを拡張する新しいクラス)、それを代わりに起動して、Bという2つのインスタンスの代わりに、BのインスタンスとCopyBのインスタンスをインスタンス化します。
関連する問題