多个Activity界面跳转,关掉某个Activity
1、广播关闭Activity
通过在AndroidManifest.xml文件中,对Activity进行静态过滤action注册;
<activity android:name=".activity.AActivity">
<intent-filter>
<action android:name="action_a" />
</intent-filter>
</activity>
<activity android:name=".activity.BActivity">
<intent-filter>
<action android:name="action_b" />
</intent-filter>
</activity>
再者,需要创建BaseActivity,需关闭的Activity要继承BaseActivity。
BaseActivity.java源码
public class BaseActivity extends Activity {
//根据需求定义自己需要关闭页面的action
public static final String RECEIVER_ACTION_FINISH_A = "action_a";
public static final String RECEIVER_ACTION_FINISH_B = "action_b";
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);
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()) ) {
BaseActivity.this.finish();
}
}
}
@Override
protected void onDestroy() {
if (mRecevier != null) {
unregisterReceiver(mRecevier);
}
super.onDestroy();
}
}
BActivity.java 源码使用
public class BActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
}
public void onClick(View view) {
switch (view.getId()){
case R.id.b_activity_btn:
sendFinishActivityBroadcast(this);
break;
}
}
public static void sendFinishActivityBroadcast(Context context) {
Intent intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_A);
context.sendBroadcast(intent);
intent = new Intent(BaseActivity.RECEIVER_ACTION_FINISH_B);
context.sendBroadcast(intent);
}
}
sendFinishActivityBroadcast方法也可以做成Utils工具类,这样会更方便使用,减少Activity的代码量