mNoLooperThreadHandler = new EventHandler(mainLooper); msgobj = "NoLooperThread has no looper and handleMessage function executed in main thread!"; } else{ mNoLooperThreadHandler = new EventHandler(myLooper); msgobj = "This is from NoLooperThread self and handleMessage function executed in NoLooperThread!"; } mNoLooperThreadHandler.removeMessages(0); if(bpostRunnable == false){ //send message to main thread Message msg = mNoLooperThreadHandler.obtainMessage(2, 1, 1, msgobj); mNoLooperThreadHandler.sendMessage(msg); Log.e(TAG, "NoLooperThread id:--------+>" + this.getId()); }else{ //下面new出来的实现了Runnable接口的对象中run函数是在Main Thread中执行,不是在NoLooperThread中执行 记得 null == myLooper么 //注意Runnable是一个接口,它里面的run函数被执行时不会再新建一个线程 //您可以在run上加断点然后在eclipse调试中看它在哪个线程中执行 mNoLooperThreadHandler.post(new Runnable(){ public void run() { // TODO Auto-generated method stub tv.setText("update UI through handler post runnalbe mechanism!"); Log.e(TAG, "update UI id:--------+>" + Thread.currentThread().getId()); noLooperThread.stop(); } }); } } } class OwnLooperThread extends Thread{ private EventHandler mOwnLooperThreadHandler = null; @Override public void run() { Looper.prepare(); Looper myLooper = Looper.myLooper(); Looper mainLooper= Looper.getMainLooper(); String msgobj; if(null == myLooper){ mOwnLooperThreadHandler = new EventHandler(mainLooper); msgobj = "OwnLooperThread has no looper and handleMessage function executed in main thread!"; }else{ mOwnLooperThreadHandler = new EventHandler(myLooper); msgobj = "This is from OwnLooperThread self and handleMessage function executed in NoLooperThread!"; } mOwnLooperThreadHandler.removeMessages(0); //给自己发送消息 Message msg = mOwnLooperThreadHandler.obtainMessage(3,1,1,msgobj); mOwnLooperThreadHandler.sendMessage(msg); Looper.loop(); } } public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case 101: //主线程发送消息给自己 Looper looper = Looper.myLooper();//get the Main looper related with the main thread //如果不给任何参数的话会用当前线程对应的Looper(这里就是Main Looper)为Handler里面的成员mLooper赋值 mHandler = new EventHandler(looper); // 清除整个MessageQueue里的消息 mHandler.removeMessages(0); String obj = "This main thread's message and received by itself!"; Message msg = mHandler.obtainMessage(1,1,1,obj); // 将Mes |