如何从另一个 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 并且活动的电池使用量会不断重新加载其持久状态。
这是我正在尝试做的事情:
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 并且活动的电池使用量会不断重新加载其持久状态。