knrt.net
当前位置:首页 >> 如何终止AnDroiD HAnDlEr 中的消息处理 >>

如何终止AnDroiD HAnDlEr 中的消息处理

在Android中,activity做为主线程,如其他线程需要与其交互,要在message队列中进行处理。至于Handler、Message、MessageQueue、looper在网上都有很多详细说明,讲的也就是将消息或线程通过handler放入消息队列,looper用于消息队列中就行消息间...

首先你应该把ImageLoad方法放到线程中去执行,因为这个应该是个耗时操作,放到UI线程中,程序会假死,通过handler去启动这个线程来执行这个方法,如果取消的话,在发给handler一个消息,让handler再去停止这个线程。

handler.removeMessages(what); handler.removeCallbacks(Runnable);

如果是通过handler sendMessage的话是无法中断的,因为handler立马就处理了 如果你是通过handler.postRunnale的话,可以通过 handler.removeCallbacks 来取消

可以写一个计时器,控制handler中的消息存在的时间,也可以把它写到一个线程里面,通过控制线程的开启或者关闭来控制里面消息的发送

为什么要终止,你处理的消息会很久?把它当一个线程来看 不过handler是主线程,程序在里面出不来,界面会动不了的

handler.removeMessages(what); 这条语句就可以了

你的判断语句有问题,相当于移除了消息又添加了消息,加一个else应该就能解决。 if (progress >= stop) { mHandler.removeMessages(MSG_PROGRESS_UPDATE);}else{ mHandler.sendEmptyMessageDelayed(MSG_PROGRESS_UPDATE, 30);}

Message message=Message.obtain();没必要每次都new一个新的。

一、Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用。比如可以用handler发送一个message,然后在handler的线程中来接收、处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其...

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com