- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android基础之异步消息处理机制解读
Android基础之异步消息处理机制
今天讲述一下Android的异步消息处理机制,说到异步,我们肯定会想到继承Thread,实现Runnable来处理耗时操作,然后再发消息去处理对应的业务逻辑。相信大家对下面的代码非常熟悉。
public class MainActivity extends Activity {
private static final int MESSAGE = 1;
private static Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Log.i(Log,text);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
CustomThread thread = new CustomThread();
thread.start();
CustomRunnable runnable = new CustomRunnable();
runnable.run();
}
private class CustomThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
mHandler.sendEmptyMessage(MESSAGE);
}
};
private class CustomRunnable implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
mHandler.sendEmptyMessage(MESSAGE);
}
}
}
然而这次的主要内容就是消息处理的原理。
我们首先了解一下以下各元素:
Message:消息
MessageQuene:消息队列,可以添加消息,处理消息。
Looper:消息循环,用于循环取出消息进行处理。
Handler:发送消息;消息循环从消息队列中取出消息后要对消息进行处理。
我们来看Handler的无参构造方法:
public Handler() {
this(null, false);
}
public Handler(Callback callback, boolean async) {
if (FIND_POTENTIAL_LEAKS) {
final Class? extends Handler klass = getClass();
if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass())
(klass.getModifiers() Modifier.STATIC) == 0) {
Log.w(TAG, The following Handler class should be static or leaks might occur: +
klass.getCanonicalName());
}
}
mLooper = Looper.myLooper();
if (mLooper == null) {
throw n
文档评论(0)