0

以下の状況で活動を再開したいのですが、

アクティビティAはアクティビティBを呼び出しますアクティビティBはアクティビティCを呼び出します

ここで、アクティビティAに移動しますが、既存のインスタンスを使用して新しいアクティビティを作成したくありません。

試してみましIntent.FLAG_ACTIVITY_REORDER_TO_FRONTたが、並べ替えるだけで、押し戻すとアクティビティCになりたくありません。

アクティビティAの開始中にアクティビティBとアクティビティCをクリアしたい。

助けてください...

4

4 に答える 4

1

FLAG_ACTIVITY_CLEAR_TOPフラグを使用する

于 2012-09-08T09:50:32.230 に答える
0

SingleInstanceマニフェスト ファイルで宣言することにより、アクティビティを A にすることができるため、launchMode毎回アクティビティが作成されることはありません。

アクティビティ B と C を呼び出す場合NO_HISTORYは、目的で Flag を使用します。そのため、戻るキーを押すと、スタックにはなりません。


開発者ドキュメントからインテント - インテント フラグ - マニフェスト ファイルを読み取ります。

于 2012-09-08T09:53:14.847 に答える
0

アクティビティのライフサイクルActivity クラス 、Bundle クラス、サンプル コードを含むトピックに関するこのローカル ディスカッションについてよく理解する必要があります。SingleInstance を使用すると役立ちますが、バックグラウンドで OS がアプリを強制終了するリスクがあります。閉じる前にデータを保存すると、他のアクティビティの 1 つまたは新しい無関係なアプリ (電話が鳴った場合など) に進むことで、ユーザーがアプリをバックグラウンドに置いたときのアプリの状態を再構築できます。

于 2012-09-08T10:08:51.883 に答える
0

アクティビティ B と Cを設定FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOPてスタックから削除し、アクティビティ A の既存のインスタンスに戻す必要があります。次のようにします。

Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
于 2012-09-10T07:31:01.837 に答える