免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[經(jīng)典]android 消息機(jī)制(二)

接上文。

角色綜述(回顧):

(1)UI thread通常就是main thread,而Android啟動程序時會替它建立一個MessageQueue。

(2)需要一個Looper對象,來管理MessageQueue

(3)可以構(gòu)造Handler對象來push新消息到Message Queue里;或者接收Looper所送來的消息。

(4)線程AHandler對象可以傳遞給別的線程,讓別的線程能送訊息來給線程A。

(5)線程AMessage Queue里的消息,只有線程A所屬的對象可以處理。

 例二、子線程傳遞消息給主線程

public class Activity2extends Activityimplements OnClickListener{

      Buttonbutton =null;

      TextViewtext =null;

      MyHandlermHandler =null;

      Threadthread ;

      protected void onCreate(Bundle savedInstanceState) {

             super.onCreate(savedInstanceState);

             setContentView(R.layout.activity1);        

             button = (Button)findViewById(R.id.btn);

             button.setOnClickListener(this);

             text = (TextView)findViewById(R.id.content);

      }

      public void onClick(View v) {

             switch (v.getId()) {

             case R.id.btn:

                    thread =new MyThread();

                    thread.start();

                    break;

             }            

      }     

      private class MyHandlerextends Handler{             

             public MyHandler(Looper looper){

                    super(looper);

             }

             public void handleMessage(Message msg) {

                    text.setText(msg.obj.toString());

             }            

      }

      private class MyThreadextends Thread{

             public void run() {

                    Looper curLooper = Looper.myLooper();

                    Looper mainLooper = Looper.getMainLooper();

                    String msg ;

                    if(curLooper==null){

                           mHandler =new MyHandler(mainLooper);

                           msg ="curLooper is null";

                    }else{

                           mHandler =new MyHandler(curLooper);

                           msg ="This is curLooper";

                    }

                    mHandler.removeMessages(0);

                    Message m =mHandler.obtainMessage(1, 1, 1, msg);

                    mHandler.sendMessage(m);

             }            

      }

}

說明:

Android會自動替主線程建立Message Queue。子線程沒有建立Message Queue。所以mHandler屬于主線程。mHandler.sendMessage(m);m消息存入主線程的Message Queue。mainLooper看到Message Queue里有訊息,主線程執(zhí)行到mHandlerhandleMessage()來處理消息。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
android消息地址
android消息機(jī)制 之Handler
深入Android Handler與線程間通信ITC的詳解
【轉(zhuǎn)】Handler: 主線程如何通知子線程
Android性能優(yōu)化之常見的內(nèi)存泄漏
Android 多線程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服