使用EventBus通讯不成功

2023-05-16

最近在开发一个直播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()方法!!程序就会报错,崩溃!唉~自己挖的坑,不跳不行。这个事件告诉我们,写代码还是要多留点心眼才行,遇到问题要一步一步分析出哪里出问题,再去解决问题。最后放上解决后的代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用EventBus通讯不成功 的相关文章

  • 使用EventBus通讯不成功

    最近在开发一个直播app的项目 xff0c 遇到一个需求是当用户点击 退出登录 这个操作时 xff0c 回到登录界面 xff0c 让用户重新登录 这个需求实现起来一点都不难 xff0c 不就是点击退出登录后 xff0c Intent到Log
  • javafx事件总线之EventBus

    JAVAFX EventBus是一个轻量级的事件总线框架 用于在JavaFX应用程序中实现基于事件的通信和解耦 它提供了一种简单的方式 让组件能够订阅和发布事件 从而使得应用程序中的各个组件能够相互通信 而不需要相互依赖 JAVAFX Ev
  • Vue.js中事件总线EventBus的使用

    Vuex的使用方法 1 介绍和安装 2 配置 3 注册 4 在组件内使用 1 介绍和安装 EventBus 又称为事件总线 在Vue中可以使用 EventBus 来作为沟通桥梁的概念 就像是所有组件共用相同的事件中心 可以向该中心注册发送事
  • EventBus报错:its super classes have no public methods with the @Subscribe annotation

    看源码得知 其注解方法为空 则在当前类或者父类中 没有接收event发送的消息 所以在收到回调的方法中添加如下注解方法 Subscribe threadMode ThreadMode MAIN public void onCollectio
  • google Guava之EventBus

    文章目录 EventBus基本用法 1 创建Listener 2 创建EventBus并发送消息 Listener之间的继承关系 Subscriber 不同类型参数的Subscribe event 继承关系的event DeadEvent
  • 如何配置 Vert.x 事件总线以跨 Docker 容器集群工作?

    在我当前的设置中 我使用 Hazelcast 集群管理器的默认多播选项 当我链接容器化 Vertx 模块的实例 通过 Docker 网络链接 时 我可以看到它们正在成功创建 Hazelcast 集群 但是 当我尝试从一个模块在事件总线上发布
  • 带有组合 API 的 Vue 3 事件总线

    我已经设置了mitt并尝试将事件分派到另一个组件 但我遇到了困难 因为在setup 它没有的方法this用于访问应用程序实例 这是我尝试过的 import App from App vue const el document getElem
  • 如何使用 eventBus 作为总线来将更新传递给 Vue 组件中的视图?

    监听组件 b 中总线的自定义事件 然而 在组件a中分派事件后 它访问组件b 执行了组件b的监听函数 但是msg数据功能未更新 请不要说Vuex 相关代码基于Vue CLi3 这里的代码 A组份
  • React.js - Flux 与全局事件总线

    与全局事件总线相比 使用 Flux 有何优势 我认为调度程序就是所需要的 组件将带有数据的 用户事件 发布到调度程序 调度程序执行订阅商店的处理程序 处理程序发布 更新事件 以及商店的更新属性 调度程序执行订阅组件的处理程序 并使用存储的更
  • Android,通知 backstack 片段发生某些变化

    在发生某些更改时通知后台堆栈中的所有片段的最佳实践是什么 我尝试使用EventBus并且每个片段都会订阅该事件 然后当发生更改时 主要活动将发布事件发送给所有订阅者 Only onDestroy我取消订阅已销毁的片段 我不喜欢这个解决方案
  • 是否可以将 REST 和消息传递结合起来用于微服务?

    我们拥有基于微服务架构的应用程序的第一个版本 我们使用 REST 进行外部和内部通信 现在我们想从CP CAP定理 切换到AP 并使用消息总线进行微服务之间的通信 关于如何基于Kafka RabbitMQ等创建事件总线的信息有很多 但我找不
  • 在 RabbitMQ 中,哪个更昂贵,每个交换器有多个队列,还是多个交换器且每个交换器有更少的队列?

    因此 我们决定在向微服务架构的迁移中使用 RabbitMQ 作为消息 事件总线 但我们无法找到放置队列的最佳方式的明确答案 我们有两个选择 One main exchange which will be a Fanout exchange
  • 如何将消息从后台服务发布到 UI 片段?

    我有一个问题EventBus来自绿色机器人 我试图从我的同步适配器的后台服务发布一个事件 并将其捕获在一个片段中以更新 UI 问题是 当我尝试从同步适配器发布事件时 我在调试日志中收到以下内容 No subscribers register
  • EventBus 和 RxJava 有什么区别? [复制]

    这个问题在这里已经有答案了 我对 android 中的 EventBus 和 RxJava 之间的区别感到困惑 我需要实现其中之一来解决我的问题 即在完成某些更改后通知某些组件 以便它们可以更新其状态 另外 我读到 EventsBus 已因
  • EventBus、注册和registerSticky方法

    我使用 greenrobot EventBus 库在我的 android 应用程序中的两个片段之间发送数据 我想知道两者之间有什么区别register Object b 方法和registerSticky Object object met
  • 为什么 Guava eventbus(模块)不可扩展?

    在最新版本中 以及之前的版本中 Guava eventbus 模块不可扩展 目前 它使用订阅者和SubscriberRegistry在内部决定调度事件 但这些类是包私有的 因此不可扩展 如果Subscriber and Subscriber
  • GWT - MVP 事件总线。创建多个处理程序

    我正在处理我继承的大型应用程序 并且遇到了一些最佳实践问题 每次用户导航到我们的客户编辑页面时 都会创建一个新的演示者并设置一个视图 有一个用于客户编辑的主演示者和一个主视图 主视图中还存在由主演示者的子演示者使用的子视图 在子演示者中 我
  • 事件驱动架构的 jQuery 插件?

    是否有事件驱动架构 jQuery 插件 第 1 步 订阅 The subscribers subscribe to the event handler in the middle and pass in a callback method
  • 是否需要事件总线注销

    我正在实施MVPAndroid 中的模式 我正在使用EventBus让知道P从活动 A 重新输入活动 B 发生的事情以更新 A 的视图 我在构造函数中将演示者注册到 EventBus 内部 但我没有看到任何可以取消注册它的地方 public
  • RxJava 作为事件总线?

    我开始学习 RxJava 到目前为止我很喜欢它 我有一个片段与单击按钮时的活动进行通信 用新片段替换当前片段 谷歌推荐界面 http developer android com training basics fragments commu

随机推荐

  • VTK 学习----3D基础知识-着色器和图形管道

    2 5 着色器和图形管道 2 5 1 图形管道 在三维绘图引擎中 xff0c 一切物体都在三维空间 xff0c 但屏幕和窗口是2D像素阵列 xff0c 因此三维引擎的大部分工作是将所有3D坐标转换为合适屏幕的2D像素 将3D坐标转换为2D像
  • debian作为web server 的进一步深化设置

    1 xff0c 打开gzip压缩 http www jzxue com wangzhankaifa php 201104 14 7108 html php ini zlib output compression 61 On zlib out
  • Hadoop shell

    1 Hadoop shell 1 1 引言 调用文件系统 FS Shell命令应使用 bin hadoop fs lt args gt 的形式 所有的的FS shell命令使用URI路径作为参数 URI格式是scheme authority
  • windows 平台适配达梦数据库 dmPython: python3.9 ---import dmPython提示找不到指定的模块

    报错现象 xff1a Python 3 9 0 tags v3 9 0 9cf6752 Oct 5 2020 15 34 40 MSC v 1927 64 bit AMD64 on win32 Type 34 help 34 34 copy
  • UIControlEvents中的event被触发解释

    UIControlEventTouchDown 鼠标按下 UIControlEventTouchDownRepeat 重复点击 注 多次重复按下时 UIControlEventTouchDown gt UIControlEventTouch
  • iOS设置圆角的4种方法

    1 直接layer层的设置 不推荐 其中的masksToBounds会实现离屏渲染 GPU会在当前屏幕缓冲区开辟一个新的缓冲区进行工作 也就是离屏渲染 这会给我们带来额外的性能损耗 如果这样的圆角操作达到一定数量 会触发缓冲区的频繁合并和上
  • 红帽RHCE之查看进程

    列出进程 进程的定义 xff1a 进程 xff08 process xff09 是已启动的可执行程序的运行中实例 xff0c 由以下部分组成 xff1a 1 已分配的内存地址空间 2 安全属性 xff0c 包括所有权凭据与特权 3 程序代码
  • could not find main class com/intellij/idea/main

    虚拟机 Windows 32位操作系统 安装完idea 出现 could not find main class com intellij idea main 解决方案 xff1a 问题很形象了没有主启动类 xff0c idea的安装需要j
  • H5 使用微信开放标签跳转小程序

    微信开放标签是微信公众平台面向网页开发者提供的扩展标签集合 xff0c 可以在网页上提供跳转小程序 打开 App 等能力 本文梳理使用微信开放标签跳转小程序的过程 xff0c 以备日后查阅 参考链接 1 开放标签说明文档 准备已认证的服务号
  • @Autowired和构造方法执行的顺序解析

    先看一段代码 xff0c 下面的代码能运行成功吗 xff1f span class hljs annotation 64 Autowired span span class hljs keyword private span User us
  • 腾讯视频客户端导出MP4格式

    腾讯视频下载下来之后是 qlv格式 xff0c 这种格式只能使用客户端播放 感觉挺蛋疼的 xff0c Mp4好不容易让各种设备都可以统一播放视频了 xff0c 这样一搞感觉又倒退了几十年 xff0c 关键的是 xff0c 有些资源是腾讯独家
  • Anaconda安装及配置python虚拟环境

    近期需要在多个场景下进行实验 xff0c 而不同场景的测试脚本所需的环境配置不同 xff0c 所以疲于在服务器上配置不同的环境 因为这个成功地被mentor喷了个半死 xff0c 在mentor的提示下才想起配置虚拟环境这回事 xff08
  • ThreeJS 开发实例

    形状和材质 虚线 画虚线 xff1a function DrawDashLine span class hljs keyword var span geometry 61 span class hljs keyword new span T
  • Threejs性能监视和可视化控制

    概述 性能监视是监视threejs运行中的刷新频率 xff0c 要使用到threejs提供的stat js xff0c 可视化控制是在窗口中显示一个可见的控制框 xff0c 可以通过鼠标改变其中的值 xff0c 达到改变threejs对象参
  • threejs加载3D模型例子

    加载3D模型 首先要引入ColladaLoader加载器 xff0c Collada是一个3D模型交换方案 xff0c 即不同的3D模型可以通过Collada进行相互转换 xff0c 言外之意 xff0c threejs可以使用Collad
  • threejs坐标转换

    屏幕坐标转three js坐标 将屏幕坐标转变成threejs空间坐标 xff1a span class hljs function span class hljs keyword function span span class hljs
  • 搭建GitLab+Jenkins持续集成环境图文教程

    GitLab是一个代码仓库 xff0c 用来管理代码 Jenkins是一个自动化服务器 xff0c 可以运行各种自动化构建 测试或部署任务 所以这两者结合起来 xff0c 就可以实现开发者提交代码到GitLab xff0c Jenkins以
  • threejs-经纬度转换成xyz坐标的方法

    用threejs做3D应用时 xff0c 很经常会接触到球状物体 xff0c 比如说地球 xff0c 要定义球上的一点 xff0c 用经纬度是常用的办法 现在 xff0c 我们要在北京这个地方标一个点 xff0c 北京的坐标为 北纬39 9
  • HTML5 响应式图片

    现在上网设备越来越多 xff0c 各种设备的屏幕千差万别 xff0c 如果只用一张图片去涵盖所有的设备 xff0c 一是可能会造成某些设备上显示效果不佳 xff0c 比如使用了一张低清晰度的图 xff0c 而网页运行在一个高清大屏里 xff
  • 使用EventBus通讯不成功

    最近在开发一个直播app的项目 xff0c 遇到一个需求是当用户点击 退出登录 这个操作时 xff0c 回到登录界面 xff0c 让用户重新登录 这个需求实现起来一点都不难 xff0c 不就是点击退出登录后 xff0c Intent到Log