如何用TimerTask实现自动更新多个UI界面?

zxy7608035 2016-01-30 12:20:19
在单独的一个UI界面中,利用Timer更新没有问题,使用Handler的Message或者runOnUiThread(new Runnable()来实现就可以了。
现在遇到的问题是,如何利用Timer来实现自动更新多个UI界面的问题。
1:在每个界面设置Timer可以实现更新。但每个界面的Timer并不会随着界面的切换而停止;
2:更难受的是,在界面的多次切换过程中,会多次执行mTimer.schedule(task, 2000, 2000);这个命令。导致一个页面中就建立了多个Timer线程,结果就是画面更新越来越快。基本上是切换一次就增加一个线程。这个问题如何解决呢?

而且,我发觉mTimer.schedule(task, 2000, 2000);——这个命令的前后,是不能用if语句的,否则不会执行这个命令。
在界面的切换过程中,我想关闭前一个界面的Timer,使用mTimer.cancel();命令。但程序会闪退。

现在看来,如果能让Timer独立与界面之外,才能解决这个问题。如何才能独立于界面之外呢?
另外使用startActivity(intent);命令切换界面,是重新执行下一个界面的onCreate吗?
谢谢各位
...全文
378 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxy7608035 2016-02-01
  • 打赏
  • 举报
回复
引用 1 楼 u014165119 的回复:
Timer好像不会因为你切换界面就停止的,还有用if就不执行这更不能,肯定是你条件不满足,要更新多个界面的话,用广播就可以了,一个界面启动Timer并发出广播,每个界面都注册一个广播接收者,收到广播就更新UI。
谢谢,我是新人。楼上朋友给了我思路,我准备用EventBus来实现,看行不行,不行就用你说的广播。但是广播方式好像要绑定服务。 看来我要多看看视频,把基础打牢一点。
zxy7608035 2016-02-01
  • 打赏
  • 举报
回复
我试试用eventbus,谢谢楼上朋友
StoneHui_ 2016-01-30
  • 打赏
  • 举报
回复
Timer好像不会因为你切换界面就停止的,还有用if就不执行这更不能,肯定是你条件不满足,要更新多个界面的话,用广播就可以了,一个界面启动Timer并发出广播,每个界面都注册一个广播接收者,收到广播就更新UI。

80,490

社区成员

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

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