Android線程之Looper

來源:互聯網
上載者:User

標籤:

  之前已經為大家奉獻了關於Handler和Message的使用,本篇我們來瞭解一下Handler內部的具體使用,本篇主要探討Looper的在處理Handler的訊息機制中起的重要作用,我們知道我們在子線程向主線程發生訊息通過sendMessage()方法,Handler處理訊息則是通過handMessage()方法,內部的訊息傳遞機制,下面我們一起來探討一下。

  為了方便大家的理解,這裡我以一個日常生活中的例子來為大家介紹一下Handler、Looper的處理細節:例子講述的是我們開會時,要去上廁所。

  

  看到上面的例子,我想大家對於Looper一定有了一個很好的認識。

  自建Thread類中實現Handler對象:

public class MainActivity extends Activity {        private Handler firstHandler = new Handler(){        public void handleMessage(android.os.Message msg) {            System.out.println("UI------->:"+Thread.currentThread());        };    };        class Mythread extends Thread{        private Handler handler;        @Override        public void run() {            Looper.prepare();//建立一個Looper對象            handler = new Handler(){                @Override                public void handleMessage(Message msg) {                    System.out.println("子線程:"+Thread.currentThread());                }            };            Looper.loop();//通過這個方法迴圈處理方法                    }    };    private Mythread thread;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                thread = new Mythread();        thread.start();        try {            Thread.sleep(3000);        } catch (InterruptedException e) {            e.printStackTrace();        }        thread.handler.sendEmptyMessage(1);//在子線程中處理        firstHandler.sendEmptyMessage(1);//在主線程中處理            }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

  LogCat資訊:

  

Android線程之Looper

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.