使用EventBus通讯不成功

最近在开发一个直播app的项目,遇到一个需求是当用户点击 退出登录 这个操作时,回到登录界面,让用户重新登录。这个需求实现起来一点都不难,不就是点击退出登录后,Intent到LoginActvity,销毁当前Activity。但是这个有个问题,当前的Activity是在主页的Fragment,跳转过来的。我虽然销毁了当前的Activity,但是主页的activity并没有销毁掉。用图表示的,大概就是这样子。
所以,当在Login页面点击返回按钮的时候,就会返回到主页面。这很明显不符合需求的。现在的目标是,当我在个人信息页面,点击退出登录的时候,需要同时关闭主页面和个人信息页面。其实这个可以有几种方式来实现。在这里,我想起了,有个EventBus。
EventBus这个开源项目是在太厉害了!它可以实现组件间通讯,可以实现主线程与子线程的通讯。只需几局简单的代码就可以实现,通讯。废话少讲,
compile 'org.greenrobot:eventbus:3.0.0'
马上下载依赖上。需要实现通讯的话,第一步就是在需要接收消息的组件实现注册,当是要记得取消注册,然后创建一个接受消息的方法,方法传入的对象,我这里用的是一个EventMsg的Bean


然后在需要发消息的组件中写上这句代码
好了,终于写完了。运行起来,发现主页面接受不了消息!!!!这个什么情况!!看着自己写的代码想了很久,终于发现了问题!其实上面的代码是有问题。因为当主页面跳转到个人信息界面后,走了OnStop()的生命周期,EventBus就执行了unregister的方法!!!!!所以,主页面一直执行不了!!从这个问题还发现了另一个问题,就是在OnStart()注册EventBus也是不科学的!!因为,在个人信息界面,返回主页面后,那主页面会再一次执行OnStart()方法!!程序就会报错,崩溃!唉~自己挖的坑,不跳不行。这个事件告诉我们,写代码还是要多留点心眼才行,遇到问题要一步一步分析出哪里出问题,再去解决问题。最后放上解决后的代码
发布了47 篇原创文章 · 获赞 29 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Ruan_Number3/article/details/75570938