Android 多執行緒程式設計

2021-09-24 03:45:17 字數 1884 閱讀 4475

在子執行緒中更新主線程引數

asynctask

class mythread implements runnable

}

啟動mythread

mythread mythread = new mythread();

new thread(mythread).start();

new  thread(

new runnable() }

).start();

子執行緒不能直接修改主線程中的變數,否者會出現異常。

首先定義乙個整形常量update_data。

public static final int update_data = 1;
新增乙個handler物件,並重寫父類的handlemessage()方法。

private handler handler = new handler()

}}

在單擊事件中開啟子執行緒,在「具體的邏輯」執行完成後,建立乙個message物件,將message物件的what欄位的值指定為update_data,將message物件傳送出去。

很快,handler就會收到這條message,並在handlemessage()方法中對它進行處理。

new  thread(

new runnable() }

).start();

對於在子執行緒中使用主線程中的變數,android提供了乙個更方便的工具:asynctask。

即使對非同步訊息處理機制完全不了解,也可以十分簡單的從子執行緒切換到主線程。

asynctask是乙個抽象類,在繼承時我們可以為asynctask類指定3個泛型引數。

params:在執行asynctask時,需要傳入的引數,可用於在後台任務中使用

progress:後台任務執行時,如果需要再介面上顯示當前進度,則使用這裡指定的泛型作為進度單位。

result:當任務執行完畢後,如果需要對結果進行返回,則使用這裡指定的泛型作為返回值型別。

//void:表示在執行asynctask的時候不需要傳入引數給後台任務

//integer:表示使用整型資料來作為進度顯示單位

//boolean:表示使用布林型資料來反饋執行結果

class downloadtask extends asynctask

重寫asynctask中的幾個方法,完成對任務的定製

doinbackground():中執行具體的耗時任務

onprogressupdate():中進行主線程變數操作

onpostexecute():中做執行一些任務的收尾工作

class downloadtask extends asynctask

@override

protect boolean doinbackground(void ... params)

@override

protect void onprogressupdate(integer ... values)

@override

protect void onpostexecute(boolean result)

}

如果想要啟動這個任務,只需要編寫以下**即可:

new downloadtask().execute();

Android多執行緒程式設計

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

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 ...