当前位置: 代码迷 >> 综合 >> 利用EventBus一键退出APP关闭所有activity
  详细解决方案

利用EventBus一键退出APP关闭所有activity

热度:93   发布时间:2024-02-22 15:35:27.0

之前用过在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);
}
  相关解决方案