一个使用Handler的postDelayed()方法的大bug,求指点

fan12 2016-08-06 03:45:22
我编写了一个用Handler和Runnable实现简单自动播放的功能,

在Runnalbe的run()方法里用了一个postDelayed(mRun, SPEED); 当播放完最后一个内容后removeCallbacks(mRun);

然后在“开始”按钮的监听事件中mHandler.post(mRun); 在“快进”和“后退”的监听事件中也写了removeCallbacks(mRun)和postDelayed(mRun, SPEED)的代码,以便保持播放的节奏。

但是在测试的时候由于极快的点击了“快进”按钮(大概几十下),当重新点击“开始”按钮时,自动的播放的速度忽然变得极快,SPEED参数完全不起作用了!

关闭程序后重新打开仍然是那样,关闭手机重启也不行,关机抠电池重启也不行


求大神分析一下问题大概可能出在什么地方?
关键是程序重启也不行,是android底层的Handler处理出什么问题了吗?
...全文
425 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
winter_sui 2016-08-07
  • 打赏
  • 举报
回复
统一一下异步处理的方式吧,把postDelay都改用Handle来实现。当要重新播放或者快进后退的时候,先移除Handle的事件监听,在发送Handle的事件。

80,348

社区成员

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

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