android handler 多執行緒demo

2021-06-09 00:33:05 字數 1571 閱讀 6780

andriod提供了 handler 和 looper 來滿足執行緒間的通訊。為了研究其中執行緒機制的問題,寫了2個demo:

demo1:

package com.mp;

import android.os.bundle;

import android.os.handler;

import android.os.handlerthread;

import android.util.log;

public class mythread extends activity

private class myrunnable implements runnable catch (interruptedexception e)

} }}

在這個demo中,整個過程如下:

程式已啟動,就把myrunnable加入到訊息佇列中,android的handler是非同步機制,所以在handler.post(new myrunnable());  之後,程式會繼續執行,所以以後的語句會繼續,這時候我們輸出oncreate中的當前執行緒id。同時myrunnable的run方法也在執行,一樣輸出run方法中的當前執行緒id,然後讓執行緒休眠6秒。

demo的結果分析:

1:控制台的輸出: oncreate---the thread id is :1

runnable---the thread is running

runnable---the thread id is :1

2:程式啟動後6秒,我們才看到main.xml中的內容(只有乙個textview)

於是,android給我們提供了looper這樣乙個類。其實android中每乙個thread都跟著乙個looper,looper可以幫助thread維護乙個訊息佇列。

demo2:

package com.mp;

import android.os.bundle;

import android.os.handler;

import android.os.handlerthread;

import android.util.log;

public class mythread extends activity

private class myrunnable implements runnable catch (interruptedexception e)

} }}

在這個demo中,用到了handlerthread,在handlerthread物件中可以通過getlooper方法獲取乙個looper物件控制控制代碼,我們可以將其這個looper物件對映到乙個handler中去來實現乙個執行緒同步機制。於是就有以下結果;

1:控制台的輸出: oncreate---the thread id is :1

runnable---the thread is running

runnable---the thread id is :10

2:程式啟動後,我們立刻看到main.xml中的內容。

這樣就達到了多執行緒的結果。

Android Handler訊息機制

handler訊息機制 優點 寫法 1.主線程中建立乙個handler物件 handler handler new handler 2.複寫handler物件的handlermessage方法 public void handlemessage android.os.message msg 3.在子...

Android Handler 工作原理

handler message messagequeue looper 1.looper.prepare public static void prepare private static void prepare boolean quitallowed 這裡建立的looper sthreadloc...

Android Handler相關問題

1 handler是什麼?答 handler是更新ui介面的機制,也是訊息處理的機制,我們可以傳送訊息,也可以處理訊息 2 為什麼要有handler?答 android在設計的時候,封裝了一套訊息建立 傳遞 處理機制,如果不遵循這樣的機制就沒辦法更新ui資訊,就會丟擲異常。3 handler怎麼用?...