之前用过在Application new List<Activity>来存每一个打开过的activity ,然后遍历finish.
但是操作不好就会出现内存溢出 ,因为 :activity 被你代码finish 时list还是持有activity.
当然你可以在finish之前把他remove掉,但太麻烦.
这里推荐用EventBus
首页 注册
EventBus.getDefault().register(this);
然后在你需要的地方去发送通知
@Override public void onBackPressed() { //发送关闭通知,全部被你注册的activity都会接收到通知sendMessage(EXIT_APP, ""); }/**通知*/ protected void acceptMessage(int code, Object object) {//接收到关闭页面if(code==EXIT_APP){if(!isFinishing()){finish();}} }
下面是外层方法//发送消息 public void sendMessage(int code, Object o) {if (eventBean == null) {eventBean = new EventBean();}eventBean.setCode(code);eventBean.setJob(o);EventBus.getDefault().postSticky(eventBean); }@Subscribe(threadMode = ThreadMode.MAIN) public void simpleEventBus(EventBean userEvent) {acceptMessage(userEvent.getCode(), userEvent.getJob()); }
记得解除绑定
@Override
protected void onDestroy() {super.onDestroy();EventBus.getDefault().removeAllStickyEvents();EventBus.getDefault().unregister(this);
}