当然我们也可以隐式的指定Looper ,代码如下:

?[Copy to clipboard] Download zuiniuwang.java
            
  1. /**
  2. *MessageQueue2.java
  3. *com.test
  4. *
  5. *Function:TODO
  6. *
  7. *verdateauthor
  8. *──────────────────────────────────
  9. *2011-3-20Leon
  10. *
  11. *Copyright(c)2011,TNTAllRightsReserved.
  12. */
  13. packagecom.test.messagequeue;
  14. /**
  15. *ClassName:MessageQueue2
  16. *Function:TODOADDFUNCTION
  17. *Reason:TODOADDREASON
  18. *
  19. *@authorLeon
  20. *@version
  21. *@sinceVer1.1
  22. *@Date2011-3-20
  23. */
  24. importandroid.app.Activity;
  25. importandroid.graphics.Color;
  26. importandroid.os.Bundle;
  27. importandroid.os.Handler;
  28. importandroid.os.Looper;
  29. importandroid.os.Message;
  30. importandroid.view.View;
  31. importandroid.view.View.OnClickListener;
  32. importandroid.widget.Button;
  33. importandroid.widget.LinearLayout;
  34. importandroid.widget.TextView;
  35. publicclassMessageQueue3extendsActivityimplementsOnClickListener{
  36. privatefinalintWC=LinearLayout.LayoutParams.WRAP_CONTENT;
  37. privatefinalintFP=LinearLayout.LayoutParams.FILL_PARENT;
  38. publicTextViewtv;
  39. privatemyThreadt;
  40. privateButtonbtn,btn2,btn3;
  41. privateEHandlermHandler;
  42. publicvoidonCreate(Bundleicicle){
  43. super.onCreate(icicle);
  44. LinearLayoutlayout=newLinearLayout(this);
  45. layout.setOrientation(LinearLayout.VERTICAL);
  46. btn=newButton(this);
  47. btn.setId(101);
  48. btn.setText("testlooper");
  49. btn.setOnClickListener(this);
  50. LinearLayout.LayoutParamsparam=
  51. newLinearLayout.LayoutParams(100,50);
  52. param.topMargin=10;
  53. layout.addView(btn,param);
  54. btn2=newButton(this);
  55. btn2.setId(102);
  56. btn2.setText("exit");
  57. btn2.setOnClickListener(this);
  58. layout.addView(btn2,param);
  59. tv=newTextView(this);
  60. tv.setTextColor(Color.WHITE);
  61. tv.setText("");
  62. LinearLayout.LayoutParamsparam2=
  63. newLinearLayout.LayoutParams(FP,WC);
  64. param2.topMargin=10;
  65. layout.addView(tv,param2);
  66. setContentView(layout);
  67. }
  68. publicvoidonClick(Viewv){
  69. switch(v.getId()){
  70. case101:
  71. //mHandler=newEHandler(Looper.myLooper());
  72. //可以隐式的制定Looper,和上面的效果是一样的
  73. mHandler=newEHandler();
  74. t=newmyThread();
  75. t.start();
  76. break;
  77. case102:
  78. finish();
  79. break;
  80. }
  81. }
  82. //------------------------------------------------------
  83. classEHandlerextendsHandler{
  84. publicEHandler(Looperlooper){
  85. super(looper);
  86. }
  87. publicEHandler(){
  88. }
  89. @Override
  90. publicvoidhandleMessage(Messagemsg){
  91. tv.setText((String)msg.obj);
  92. }
  93. }
  94. //------------------------------------------------------
  95. classmyThreadextendsThread{
  96. publicvoidrun(){
  97. Stringobj="Thismessageisfromnewthread.";
  98. mHandler.removeMessages(0);
  99. Messagem=mHandler.obtainMessage(1,1,1,obj);
  100. mHandler.sendMessage(m);
  101. }
  102. }

在此代码中,指令:h = new EventHandler();就等于:h = new EventHandler(Looper.myLooper());
它建立了当前线程(Current Thread)的EventHandler对象。由于是由main线程执行此指令的,所以此EventHandler对象是用来存取main线程的Message Queue的。

本文出自 “最牛傻蛋的博客” 博客,转载请与作者联系!

更多相关文章

  1. 类和 Json对象
  2. 浅析Android中的消息机制-解决:Only the original thread that cr
  3. Android异步消息机制之Handler
  4. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  5. Android中文API(144) —— JsonWriter
  6. Android之Handler用法总结
  7. android通过ksoap2对webservice的解析
  8. Android开发之消息处理机制(一)——Handler
  9. Android异步加载图像小结 (含线程池,缓存方法)

随机推荐

  1. Android中文API(129) —— AudioManager
  2. 基于Apache mina 的android 客户端tcp长
  3. Android(安卓)自动化测试—robotium(八)拖
  4. 移植 libusb 到 Beagleboard 上的 Androi
  5. Android(安卓)DownloadManager下载完成事
  6. Andorid adb 命令
  7. Android(安卓)面试之 Android(安卓)篇一
  8. android adb pm命令
  9. Android(安卓)activity 参数传递
  10. SOAP in Android