Android多執行緒程式設計

2021-09-27 22:28:21 字數 2246 閱讀 2575

我們都知道android更新ui不允許在子執行緒中進行,對此,android提供了一套非同步訊息處理機制

xmlns:android

=""android:layout_width

="match_parent"

android:layout_height

="match_parent"

>

android:layout_width

="match_parent"

android:layout_height

="wrap_content"

android:id

="@+id/change_text"

android:text

="change text"

/>

android:id

="@+id/text"

android:layout_centerinparent

="true"

android:textsize

="20sp"

android:layout_width

="wrap_content"

android:layout_height

="wrap_content"

android:text

="hello world!"

/>

relativelayout

>

布局檔案中就乙個按鈕,和乙個textview

public

class

mainactivity

extends

implements

view.onclicklistener

private handler handler =

newhandler()

}};public

void

onclick

(view v)})

.start()

;break

;default

:break;}

}}

宣告乙個handler物件,並重寫父類的handlemessage()方法,在這裡對具體的message進行處理

1.先建立乙個message物件,並將它的what字段值指定為update_text然後呼叫handler的sendmessage()方法,將這條message傳送出去。很快handler就會收到這條message,並在handlemessage()方法中對它進行處理。

android中的非同步訊息處理主要有四個部分組成:message,handler,messagequeue,looper。

顧名思義就是處理者的意思,它主要是用於處理和傳送訊息的。傳送訊息一般是使用handler的sendmessage()方法,而發出的訊息經過一系列的輾轉處理之後,最終會傳遞到handlemessage()方法中。

messagequeue是訊息佇列的意思,它主要用於存放所有通過handler傳送的訊息。這部分訊息會一直存在於訊息佇列中,等待被處理。每個執行緒中只會有乙個messagequeue物件。

looper是每個執行緒中messagequeue物件的管家,呼叫looper的loop()方法後,就會進入到乙個無限迴圈當中,然後每當messagequeue中存在一條訊息,就會將他取出,並傳遞到hander的handlemessage()中去。每個執行緒中也只會有乙個looper物件。

由於asynctask是乙個抽象類,所以如果我們想使用它,就必須要建立乙個子類去繼承它。在繼承asynctask時,我們可以指定三個泛型引數,這三個引數作用如下。

在繼承asynctask時,經常需要重寫以下四個方法。

簡單來說,使用asynctask的訣竅是,在doinbackground(prarms…)中執行具體的耗時任務,在onprogressupdate(progress…) 方法中進行ui操作,在onpostexecute(result)中執行一些任務的收尾工作。

如果想啟動這個任務 只需要編寫new asynctask().execute();即可。

Android 多執行緒程式設計

在子執行緒中更新主線程引數 asynctask class mythread implements runnable 啟動mythread mythread mythread new mythread new thread mythread start new thread new runnable...

Android多執行緒程式設計及執行緒通訊

android多執行緒程式設計及執行緒通訊。android多執行緒程式設計是android應用中最普遍的程式設計方法之一,初學者只要掌握如下簡單方法,即可實現執行緒及執行緒與主介面之間通訊。1 建立執行緒 public void createspeakthread speakthread.start...

Android 多執行緒

1 簡介 2 android 平台下的多執行緒 package com.powerise.thread import android.os.bundle import android.view.view import android.view.view.onclicklistener import ...