定义一个广播类 :
public class BaseActivity extends Activity {
//根据需求定义自己需要关闭页面的action
public static final String RECEIVER_ACTION_FINISH_A = "receiver_action_finish_a";
public static final String RECEIVER_ACTION_FINISH_B = "receiver_action_finish_b";
public static final String RECEIVER_ACTION_FINISH_C = "receiver_action_finish_c";
public static final String RECEIVER_ACTION_FINISH_D = "receiver_action_finish_d";
private FinishActivityRecevier mRecevier;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRecevier = new FinishActivityRecevier();
registerFinishReciver();
}
private void registerFinishReciver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(RECEIVER_ACTION_FINISH_A);
intentFilter.addAction(RECEIVER_ACTION_FINISH_B);
intentFilter.addAction(RECEIVER_ACTION_FINISH_C);
intentFilter.addAction(RECEIVER_ACTION_FINISH_D);
registerReceiver(mRecevier, intentFilter);
}
private class FinishActivityRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//根据需求添加自己需要关闭页面的action
if (RECEIVER_ACTION_FINISH_A.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_B.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_C.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_D.equals(intent.getAction())) {
BaseActivity.this.finish();
}
}
}
@Override
protected void onDestroy() {
if (mRecevier != null) {
unregisterReceiver(mRecevier);
}
super.onDestroy();
}
}
在需要关闭的activity继承 BaseActivity
在需要关闭的地方调用下面这句
//通知所以界面关闭自己
BroadcastUtils.sendFinishActivityBroadcast(this);
public class BroadcastUtils {
/**
* 发送finish页面的广播
* action可以自己根据需要添加
*
* @param context
*/
public static void sendFinishActivityBroadcast(Context context) {
Intent intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_B);
context.sendBroadcast(intent);
intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_C);
context.sendBroadcast(intent);
}
}
public class BaseActivity extends Activity {
//根据需求定义自己需要关闭页面的action
public static final String RECEIVER_ACTION_FINISH_A = "receiver_action_finish_a";
public static final String RECEIVER_ACTION_FINISH_B = "receiver_action_finish_b";
public static final String RECEIVER_ACTION_FINISH_C = "receiver_action_finish_c";
public static final String RECEIVER_ACTION_FINISH_D = "receiver_action_finish_d";
private FinishActivityRecevier mRecevier;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRecevier = new FinishActivityRecevier();
registerFinishReciver();
}
private void registerFinishReciver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(RECEIVER_ACTION_FINISH_A);
intentFilter.addAction(RECEIVER_ACTION_FINISH_B);
intentFilter.addAction(RECEIVER_ACTION_FINISH_C);
intentFilter.addAction(RECEIVER_ACTION_FINISH_D);
registerReceiver(mRecevier, intentFilter);
}
private class FinishActivityRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//根据需求添加自己需要关闭页面的action
if (RECEIVER_ACTION_FINISH_A.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_B.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_C.equals(intent.getAction()) ||
RECEIVER_ACTION_FINISH_D.equals(intent.getAction())) {
BaseActivity.this.finish();
}
}
}
@Override
protected void onDestroy() {
if (mRecevier != null) {
unregisterReceiver(mRecevier);
}
super.onDestroy();
}
}
在需要关闭的activity继承 BaseActivity
在需要关闭的地方调用下面这句
//通知所以界面关闭自己
BroadcastUtils.sendFinishActivityBroadcast(this);
public class BroadcastUtils {
/**
* 发送finish页面的广播
* action可以自己根据需要添加
*
* @param context
*/
public static void sendFinishActivityBroadcast(Context context) {
Intent intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_B);
context.sendBroadcast(intent);
intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_C);
context.sendBroadcast(intent);
}
}