如何停止Handler的消息队列
2017-06-28 11:36
197 查看
停止Handler的消息队列
遇到的问题
调用Handler的mHandler.removeMessages(SET_VIDEO_PLAYING_CALLBACK);移除一个消息队列,但是hanlder消息还在轮询发送
Handler接收消息代码如下
`@SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { int code = msg.what; switch (code) { case SET_VIDEO_PLAYING_CALLBACK: if (onVideoPlayingCallBack == null) { return; } if (mController != null) { long currentPos = mController.getCurrentPosition(); long mDuration = mController.getDuration(); int playingStatus = mController.isPlaying() ? 1 : 0; if (mController.isPlaying()) { onVideoPlayingCallBack.onVideoPlaying(currentPos, mDuration, playingStatus); } else { onVideoPlayingCallBack.onVideoPlaying(currentPos, mDuration, playingStatus); } sendemptymessagedelayed(set_video_playing_callback, mplayingcallbackspace); } break; } super.handleMessage(msg); } };`
解决方法:这段代码
if (onVideoPlayingCallBack == null) { return;}
停止的方案
if (mHandler != null && mVideoPlayClick != null) { mHandler.removeMessages(SET_VIDEO_PLAYING_CALLBACK); } this.onVideoPlayingCallBack = null;
mHandler.removeMessages(SET_VIDEO_PLAYING_CALLBACK);并没有使消息队列销毁
所以就可以这样解决,当
this.onVideoPlayingCallBack = null时就 return; 这样便不在往下走了
相关文章推荐
- 如何清除队列中的“死”消息?
- UNIX环境下如何应用消息队列实现进程间通信
- [转]深入理解Android消息队列原理篇 Looper、Handler
- 如何安装消息队列
- 关于android Handler进行线程处理消息队列与线程队列线程无法停止的问题
- UNIX环境下如何应用消息队列实现进程间通信
- windows 7 下SYSTEM账户建立的MSMQ消息队列如何删除
- 如何应用.NET中的消息队列服务
- 如何安装消息队列(MSMQ)
- 如何用消息队列来代替分布式事务
- 如何使用 Mmcv.exe 工具来管理群集消息队列资源[转]
- 进程之间如何通过消息队列传输大量数据
- 如何使用消息队列
- android异步图片加载三之handler+线程池+消息队列模式+缓存
- Android消息队列(一)--Handler使用
- 如何应用.NET中的消息队列服务
- 如何应用.NET中的消息队列服务开发者在线 Builder.com.cn 更新时间:2008-08-05作者: 来源:开发者在线
- c#中如何操作消息队列
- Handler ,消息队列 和线程
- windows 7 下SYSTEM账户建立的MSMQ消息队列如何删除