嘿,我有一個應用程序使用defaulthttpclient登錄到幾個網站,我發現我需要使用AsyncTask作爲請求阻塞UI線程。在我的代碼中,我創建了一個狀態類的實例,即State state = new O2State();與不同的網站不同的狀態。需要幫助AsyncTasks - Android應用程序
然後我調用state.logon(String username,String password);返回包含結果這樣的細節的字符串:
String result = state.logon(username, password);
我一直在試圖實現asynctasks運行在另一個線程此代碼,返回字符串回到UI線程上完成。這個想法是我會顯示一個進度對話框,運行線程,並在完成後,會顯示一個對話框的結果。
我一直在找這個例子:
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
如果我堅持的是: 我不認爲我需要任何參數,但是doinbackground似乎需要的參數列表。我也不熟悉這個方法參數聲明的時間。
其次: 我不知道如何在線程完成執行時返回結果字符串。我應該創建一個「DoThisWhenTheThreadIsFinished(String result)」並從onPostExecute調用它嗎?
無論如何,我希望這不是太混亂閱讀,我非常感謝您可以提供任何幫助。 謝謝
@Oille C嘿非常感謝,我實際上對參數進行了很多排序,但仍然想知道如何將結果發送回UI線程,因此很好的瞭解我的想法是有道理的:-)我有任務啓動和解散進度對話框,其工作正常。我只是不確定如何引用當前活動的方法。我將活動的引用傳遞給任務構造函數,但「activity.displayLoginResults();」但我得到「未定義的類型活動錯誤」。有什麼建議麼? – 2011-03-28 18:05:41
@Oille C乾杯,實際上,問題是我把這個血腥的方法設置爲私人哈哈。是作爲一個獨立的類與活動正在通過作爲參考。 CHeersw的建議! – 2011-03-29 12:15:06