- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
在android中,有很多功能是不能放在onCreate或者onStart方法里面,因为这些功能相对
来说费时比较长,比如说下载一个文件,下载的过程比较长,但是如果写在
Activity中,
那么这段时间Activity是完全没有响应的,那么就可以将这种处理大量数据或者耗时比较
长的东西放在一个单独的线程中来完成,即Activity是一个线程,而下载的是在另外一个
线程,那么这样就可以使得下载跟Activity之间互不影响,从而得到了良好的用户体验
这里有两种队列,一种是线程队列,就是用postXX方法或者removeCallbacks方法对线程对象的操作。另一种是消息队列,用sendMessage和handleMessage方法来对消息对象进行处理
handler采用的是一个消息队列的方式,每一个handler都有一个与之关联的消息队列,而且是先进先出的方式执行,即:每次加入一个handler,然后拿出来,对其进行处理,然后再拿出另一个,再进行处理
Java代码例子一:这个例子仅仅是对线程对象进行操作的测试
Java代码
1.packageorg.hualang.handler;2.
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.view.View;
importandroid.widget.Button;8.
9.publicclassHandlerTestextendsActivity{10.
privateButtonmybutton1;
privateButtonmybutton2;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);17.
mybutton1=(Button)findViewById(R.id.mybutton1);
mybutton2=(Button)findViewById(R.id.mybutton2);20.
21. mybutton1.setOnClickListener(newButton.OnClickListener()
22. {
23.
@Override
publicvoidonClick(Viewarg0){26. /**
27. *调用Handler的post方法,将要执行的线程对象添加到
28.
*线程队列中
29.
*/
30.
handler.post(updateThread);
31.
}
32.
33.
});
34.
mybutton2.setOnClickListener(newButton.OnClickListener
()
35.
{
36.
37.
@Override
38.
publicvoidonClick(Viewv){
39.
//TODOAuto-generatedmethodstub
40.
handler.removeCallbacks(updateThread);
41.
}
42.
43.
});
44.
45.
}
46.
//创建Handler对象
47.
Handlerhandler=newHandler();
48. /**
49. *将要执行的操作卸载写入线程对象的run()方法当中50. */
51. RunnableupdateThread=newRunnable()
52. {
53. publicvoidrun()
54. {
System.out.println(更新线程);
//在run方法内部,执行postXX的方法,每隔3秒会执行一次
57.
handler.postDelayed(updateThread,
3000);
58.
}
59.
60.}
};
运行结果如下:
程序解释:首先创建一个Handler对象,然后创建一个继承自Runnable接口的线程
Java代码程序首先点击按钮“开始”,于是会马上执行post方法,将执行的线程对象添加到线程队列中,这时会马上执行
Java代码
1.publicvoidrun()2. {
System.out.println(更新线程);
//在run方法内部,执行postXX的方法,每隔3秒会执行一
文档评论(0)