建立乙個反應敏捷的應用時,乙個重要的技巧就是保證你的ui執行緒做少量的工作。任何潛在的長耗時任務應該在其他執行緒中處理。經典的例子就是受不可預料延遲影響的網路操作。使用者可以容忍一些打斷,特別是當你提供一些反饋說明正在處理一些東西,但是乙個凍結的應用對使用者來說沒有任何提示。
實際上,這是不中糟糕的做法由於androidhttpclient不允許在主線程啟動。上面的**將顯示「this thread forbids http requsets"錯誤提示。
非同步任務介紹
class bitmap**********task extends asynctask
// actual download method, run in the task thread
@override
protected bitmap doinbackground(string... strings)
// once the image is download, associates it to the imageview
@override
protected void onpostexecute(bitmap bitmap)
if (imageviewreference != null) }}
}doinbackground方法是實際在工作執行緒中執行的方法。它直接呼叫我們在文章開頭實現的方法。
這個簡化的例子介紹了asynctask的使用,如果你執行後會發現這幾行**明顯提公升了listview的效能使得滑動很流暢。
處理併發
static class downloadeddrawable extends colordrawable
public bitmap**********task getbitmap**********task()
}
讓我們修改**來使用這個新類。首先,在download方法中建立乙個例項並與imageview關聯。
public void download(string url, imageview imageview)
}
private static boolean cancelpotentialdownload(string url, imageview imageview) else
}return true;
}
private static bitmap**********task getbitmap**********task(imageview imageview)
}return null;
}
if (imageviewreference != null)
}
做了這些修改之後,我們的image**********類完成了我們期待的效果。
Boost之多執行緒
c 標準庫沒有涉及執行緒,在c 中,雖然不可能寫出標準相容的多執行緒程式,程式設計師可以使用特定作業系統提供的執行緒庫來寫出多執行緒程式來。可是,這至 少導致兩個突出的問題 作業系統普遍提供的是c庫,在c 中使用要更小心,每個作業系統都有自己的一套支援多執行緒的庫 另外,不標準,不可移植。boost...
linux之多執行緒
linux系統下的多執行緒遵循posix執行緒介面,稱為pthread 標頭檔案 include 原型 int pthread create pthread t tidp,const pthread attr t attr,void start rtn void void arg 返回值 若執行緒建...
c 之多執行緒
1.對多執行緒的呼叫用到頭檔案 1.1中的操縱函式 pthread create pthread t tidp,constpthread attr t attr,void start rtn void void arg 第乙個引數為指向執行緒 識別符號的 指標。第二個引數用來設定執行緒屬性。第三個引...