前四个退出多个Activity的方法链接如下:
这次介绍的方法是使用到了Android四大组件中广播来实现退出多个Activity的。
首先创建一个基类Activity,在基类Activity中实现对广播的监听和对监听后逻辑的实现,代码如下:
class BaseActivity extends AppCompatActivity{
private static final String TAG = "BaseActivity";
protected BroadcastReceiver finishReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, getClass().getSimpleName());
}
@Override
protected void onResume() {
super.onResume();
/*注1*/
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.finishActivity");
finishReceiver = new myBroadcastReceiver();
registerReceiver(finishReceiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
/*注2*/
if (finishReceiver != null) {
unregisterReceiver(finishReceiver);
finishReceiver = null;
}
}
/*注3*/
class myBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.broadcast.finishActivity")) {
finish();
}
}
}
}
- 注1:注册监听广播
- 注2:因为是动态注册,所以要取消广播注册
- 注3:监听到广播后的业务逻辑,finish()掉Activity
接着在需要退出多个Activity的地方添加以下代码:
/*发送广播*/
sendBroadcast(new Intent("com.example.finishActivity"));
方法步骤总结:
- 创建一个基类Activity。在onResume()中实现广播的注册和监听;在onDestroy()中实现取消广播;定义一个内部类myBroadcastReceiver继承于BroadcastReceiver,在其onReceiver()方法中实现监听到广播后的业务逻辑处理。
- 在需要退出多个Activity的地方发送广播关闭所有Activity。