Flag Activity Clear Top会破坏目标活动而不是创建目标活动

kau*_*edi 7 android android-intent android-lifecycle android-activity

我正在观看Intent.FLAG_ACTIVITY_CLEAR_TOP的行为.

例如,我有三个活动A,B和C现在Flow是A - > B - > C.

现在当我从C开始使用此标志时使用以下代码.

 Intent intent_to_a=new Intent(C.this,A.class);
                intent_to_home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent_to_a);
Run Code Online (Sandbox Code Playgroud)

AFAIK,Intent.FLAG_ACTIVITY_CLEAR_TOP应该删除B并且应该恢复A.它也会以相同但奇怪的方式执行.它删除B,而不是删除A而不是创建A.还调用A的方法onDestroy.任何人都可以告诉我它是否合适?如果我不想让它破坏我该怎么办?

Rya*_*n S 4

使用 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 );
}
Run Code Online (Sandbox Code Playgroud)

活动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);
Run Code Online (Sandbox Code Playgroud)