之前用过在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); }