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

之前用过在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);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值