我在AsyncTask中运行了ProgressDialog。 我想尝试一旦缓冲区的长度更大,然后说10000,来自ProgressDialog的消息就会改变。
请有人帮助我,这可能吗? 提前谢谢。
@Override
protected void onProgressUpdate(Integer... progUpdate) {
if (progUpdate[0] >= 10000){
progress.setMessage("Informatie wordt opgehaald....");
}
}
缓冲区是在AsyncTask doInBackGround:
中创建的try {
HttpResponse response = httpClient.execute(request);
System.out.println("Response: " + response.getEntity().getContentLength());
/******* READ CONTENT IN BUFFER *******/
InputStream inputStreamActivity = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStreamActivity));
StringBuilder sb = new StringBuilder();
String line = null;
int count = sb.length();
while ((line = reader.readLine()) != null) {
sb.append(line);
publishProgress(sb.length());
}
/******* CLOSE CONNECTION AND STREAM *******/
System.out.println(sb);
inputStreamActivity.close();
kpn = sb.toString();
httpClient.getConnectionManager().shutdown();
}
答案 0 :(得分:5)
要更改对话框的消息,您需要使用AsyncTask的onProgressUpdate方法,并将AsyncTask的第二个参数定义为整数。 onProgressUpdate看起来像:
protected void onProgressUpdate(Integer... progUpdate) {
if (progUpdate[0] >= 10000){ // change the 10000 to whatever
progress.setMessage("The new message");
}
}
要调用它,您需要在AsyncTask的doInBackground方法中更新这些行:
while ((line = reader.readLine()) != null) {
sb.append(line);
publishProgress(sb.length());
}
摆脱那个Runnable。你不需要它。在这里查看AsyncTask的官方android文档:http://developer.android.com/reference/android/os/AsyncTask.html在这个页面上有一个很好的例子。