7

Intent.FLAG_ACTIVITY_CLEAR_TOP の動作を見ています。

たとえば、私は3つの活動A、B、およびCを持っています。今の流れはA - > B - > Cです

今、次のコードでこのフラグを使用して C から A を開始しています。

 Intent intent_to_a=new Intent(C.this,A.class);
                intent_to_home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent_to_a);

私の知る限り、 Intent.FLAG_ACTIVITY_CLEAR_TOP は B を削除し、 A を再開する必要があります。これも同じですが、奇妙な方法で行います。B を削除し、A を作成するよりも A を削除します。A のメソッド onDestroy も呼び出されています。誰かがそれが適切かどうか教えてもらえますか? 破壊したくない場合はどうすればよいですか?

4

2 に答える 2

3

FLAG_ACTIVITY_REORDER_TO_FRONT を使用してから、インテントを使用して B に終了を指示します。

アクティビティ B:

private BroadcastReceiver finishReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };
public void onCreate() {
LocalBroadcastManager.getInstance(this)
                .registerReceiver(finishReceiver ,
                        new IntentFilter("B-finish"));
}
public void onDestroy() {
        LocalBroadcastManager.getInstance(this).unregisterReceiver(
                finishReceiver );
}

アクティビティ C:

LocalBroadcastManager.getInstance(this).sendBroadcast(
                new Intent("B-finish"));
Intent intent_to_a=new Intent(C.this,A.class);
                intent_to_home.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(intent_to_a);
于 2013-07-06T20:10:04.937 に答える