如何从不同的活动中关闭活动?

时间:2015-02-08 21:43:16

标签: android android-intent android-activity

这是我想要做的事情:

活动正在运行

活动A开始活动B

活动B正在运行

活动A在活动B中关闭

活动A重新启动

2 个答案:

答案 0 :(得分:0)

我会在活动A 中使用BroadcastReceiver并从活动B 发送广播(或从您想要完成的地方活动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中的基本相同。

答案 1 :(得分:0)

  

活动A在活动B中关闭

如果您的意思是活动A暂停并停止,那么在活动B运行时总会发生这种情况。如果你的意思是活动A被摧毁,那么它可能会在任何时候进入后台,而你完全无法控制它。您应该编写您的活动,以便用户在后台销毁它们时完全不知道。这就是“不要保持活动”开发者选项的用途。你的程序应该完全打开它。唯一的结果就是在不断重新加载持久状态的活动中,CPU和电池的使用量会略有增加。