Android的UI設計與後台執行緒互動

2021-09-06 14:16:14 字數 1826 閱讀 2278

本文將討論android應用程式的執行緒模型以及如何使用執行緒來處理耗時較長的操作,而不是在主線程中執行,保證使用者介面(ui)的流暢執行。本文還將闡述一些使用者介面(ui)中與執行緒互動的api。

ui使用者介面執行緒

1

public void onclick(view v)210

}).start();

11 }

起初,上面的**似乎是乙個很好的解決方案,因為它不會鎖住使用者介面執行緒。然面不幸的是,它違反了使用者介面單執行緒模型:android的使用者介面工具包不是執行緒安全的,只能在ui執行緒中操作它,在上面的**中,你在乙個工作執行緒中呼叫mimageview.setimagebitmap(b)時,將會發生意想不到的錯誤,這種錯誤是非常難跟蹤和除錯的。

android提供了幾種方法來從其他執行緒訪問ui執行緒。您可能已經熟悉他們了,下面是乙個較全面的列表:

1

activity.runonuithread(runnable)

2view.post(runnable)

3view.postdelayed(runnable, long)

4 handler

您可以使用這些類和方法中的任何一種糾正前面的**示例:

1

public void onclick(view v)214

});15}16

}).start();

17 }

不幸的是,這些類和方法也往往使你的**更複雜,更難以閱讀。更糟糕的是,它需要頻繁執行複雜的操作介面更新。

為了解決這個問題,1.5和更高版本的android平台提供了乙個實用類稱為asynctask,簡化了長時間執行的任務,需要與使用者介面的互動。

類似asynctask的乙個類usertask也可用於android 1.0和1.1版本,它提供了完全相同的api,所有您需要做的是把它的源**複製到你的應用程式中。

asynctask的目標是要為你的執行緒提供管理服務,我們前面的例子可以很容易的用asynctask來改寫:

1

public void onclick(view v)

25 private class downloadimagetask extends asynctask<

string

, void, bitmap

>611

12protected void onpostexecute(bitmap result)

1316 }

正如你所看到的,我們必須通過繼承asynctask類來使用它,非常重要的一點是:asynctask必須在ui執行緒中例項化它,並且只能執行一次。

以下是asynctask的簡要使用方法:

◆您可以指定三個引數型別,泛型引數,進度值(執行過程中返回的值)和最終值(執行完返回的值)。

◆該方法doinbackground()自動執行工作執行緒(後台執行緒)

◆onpreexecute(),onpostexecute()和onprogressupdate()都是在ui執行緒呼叫

◆由doinbackground返回的值()傳送到onpostexecute()

◆您可以在執行doinbackground()時呼叫publishprogress()然後在ui組程中執行onprogressupdate()。◆您可以從任何執行緒隨時取消任務

不管你是否使用asynctask,時刻牢記單一執行緒模型的兩條規則:

1、不要鎖住使用者介面。

2、確保只在ui執行緒中訪問android使用者介面工具包中的元件。

asynctask只是可以讓你更容易地做這些事情。

Android入門 基本UI設計

實現乙個android 應用,介面呈現如下效果 使用的元件 textview edittext linearlayout tablelayout button imageview radiogroup radiobutton 安卓應用開發中,首先要掌握一些基本概念,從實驗出發,首先介紹兩個元件概念 ...

ui設計現狀與意義 UI設計存在的意義

介面設計 ui design 互動設計 interactive design 可用性研究 usability research 人力因素 human factors 資訊結構工程師 information architect 工作職位的區分並不是很容易。也許不同的公司有不同的職位名稱和工作重點,但是...

ui設計現狀與意義 UI設計師的前景與現狀?

目前ui設計師具有以下幾個鮮明的特點 1 收入高 據介紹,以京 滬 粵三地為例,大部分ui設計師的薪資範圍在年薪8萬 50萬之間 稅前 有些甚至更高。2 入行門檻低 學歷背景參差不齊 由於國內配套的教育體系還未完全建立起來,所以目前從事該職位的人才大多都是計算機 藝術 心理學等背景,甚至還有很多人沒...