利用EventBus来实现通信遇到的问题

zxy7608035 2016-02-01 04:22:51
利用EventBus来实现通信遇到的问题。
我想利用一个Timer来实现多界面的更新,因此我使用了EventBus的jar包,可以实现不同线程之间通信。
现在我遇到了一个奇怪的问题,程序如下:
public void onEventMainThread(MyEvent event) {
String msg = "onEventMainThread" + event.getMsg();
System.out.println(msg);

TextView textView = (TextView) findViewById(R.id.textView01);
textView.setText(String.format("%.2f",MyData.aidian[0][0])+ "---"+ (MyData.testNum + ""));

}

我用这个eventbus方法,来实现界面数据的更新。
现在我在layout中的Activity_Main界面,更新数据没有问题。但是,当我切换到其他界面,再切换回来时,Activity_Main界面中的 textView已经被初始化,并且不再更新数字。
但是System.out.println(msg);——这个语句在logCat中打印了的。
只有textView.setText(String.format("%.2f",MyData.aidian[0][0])+ "---"+ (MyData.testNum + ""));——这个语句不执行,界面中也不变化。

说明public void onEventMainThread(MyEvent event)这个方法没有问题,是得到执行了的。但是为何到了其他界面后,再返回到Activity_Main界面时,System.out.println语句可以执行,但是更新UI的程序就不执行了呢?

...全文
575 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24609185 2016-10-09
  • 打赏
  • 举报
回复
楼主这个问题解决了吗,我也碰到同样的问题了
xiaohuh421 2016-10-09
  • 打赏
  • 举报
回复
既然activity都切换到非激活状态, 那么它本就不应该再接收数据来更新界面. 而是需要缓存数据到内存中, 等激活(onResume)的时候, 再把值取出来更新到界面上.
JQ_AK47 2016-10-01
  • 打赏
  • 举报
回复
一种可能是你发过来的event是一样的数据,所以你看不到是否有改变。 或者你不应该在事件响应函数哪里获取控件,因为findViewById方法是必须在onCreate方法回调后才能调用的。
JQ_AK47 2016-10-01
  • 打赏
  • 举报
回复
关注中。。。。
wei220000 2016-02-03
  • 打赏
  • 举报
回复
看看activity的生命周期吧
渣渣小逗比 2016-02-02
  • 打赏
  • 举报
回复
同问!!!!!!!!!
zxy7608035 2016-02-01
  • 打赏
  • 举报
回复
为何切换了画面后,textView.setTex不起作用了。 系统没报任何错误,只是没有修改textView的值。但是logCat中System.out.println(msg);这一句是打印了的。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧