如何从另一个 activity 关闭一个 activity?

How to close an activity from a different activity?

这是我正在尝试做的事情:

Activity一个运行

ActivityA开始ActivityB

Activity B 运行

Activity A 关门了 Activity B

ActivityA重启

我会在 Activity A 中使用 BroadcastReceiver 并从 Activity B[=23 发送广播=](或者从你想完成的地方 Activity A)。

public class ActivityA extends Activity {
    private FinishReceiver finishReceiver;
    public static final String ACTION_FINISH = 
           "com.mypackage.ActivityA.ACTION_FINISH";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        finishReceiver= new FinishReceiver();
        registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        unregisterReceiver(finishReceiver);
    }

    private final class FinishReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ACTION_FINISH)) 
                finish();
        }
    }
}

通过调用关闭

activityB.sendBroadcast(new Intent(ActivityA.ACTION_FINISH));

this example基本相同。

Activity A closed while still in Activity B

如果你的意思是 activity A 被暂停和停止,那么当 activity B 是 运行 时总是会发生这种情况。如果你的意思是 activity A 被销毁,那可能会在它进入后台时随时发生,你完全无法控制它。您应该编写您的活动,以便用户在后台销毁时完全不知道。这就是 "don't keep activities" 开发者选项的用途。您的程序在打开时应该可以完美运行。一直开着它的唯一后果应该是稍微增加 CPU 并且活动的电池使用量会不断重新加载其持久状态。