玩转Android组件篇Handler的使用.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档