如何在Android中处理对象和线程?
我试图看看是否有办法使用 AsyncTask 类(doInBackground()
和onPostExecute()
方法)使用对象而不是字符串。
我还想与用户界面进行互动。
是否有一个很好的教程可以开始或任何提示?
由于
答案 0 :(得分:1)
您可以将AsyncTask子类化,如下例所示。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
在此示例中,“URL”是参数类型,Long是结果类型(传递给onPostExecute()),Integer是可选的进度指示器。如果未使用,参数类型,进度类型和结果类型可以是“Void”类型。
您可以找到此示例和更长的解释here
与ui的交互必须在onPostExecute()中进行。