博主由于最近为了弄软著权,已经很久没更新了,恰巧最近学弟问了我这个问题,就写篇博客
在Android中,栈是Activity存放的位置,所以此文章得在了解四种启动模式和栈的特点下阅读。废话不多说
需求:在一个Activity中关闭某个Activity。
解决方式:网上有许多的方法,而博主喜欢用结合广播的这种。
将当前Activity命名为MainActivity;
要被关闭的Activity命名为ElseActicity;
public static final String ACTIVITY_MARK =“BoreSeven”;
工具类:
public static class BroadcastUtils {
/**
* 发送finish页面的广播
*/
public static void sendFinishActivityBroadcast(Context context) {
Intent intent = new Intent(ACTIVITY_MARK);
context.sendBroadcast(intent);
}
}
1.在ElseActivity中
private FinishActivityRecevier mRecevier;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.else_activtiy);
//广播
mRecevier = new FinishActivityRecevier();
registerFinishReciver();
}
//动态注册广播
private void registerFinishReciver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTIVITY_MARK);
registerReceiver(mRecevier, intentFilter);
}
private class FinishActivityRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//根据需求添加自己需要关闭页面的action
if (ACTIVITY_MARK.equals(intent.getAction())) {
HideSortActivtiy.this.finish();
}
}
}
//在Activity销毁时移除广播
@Override
protected void onDestroy() {
if (mRecevier != null) {
unregisterReceiver(mRecevier);
}
super.onDestroy();
}
2.在MainActivity中调用工具类中方法:
BroadcastUtils.sendFinishActivityBroadcast(this);