我正在尝试更新AsyncTask中的进度条,同时下载一些东西..
这是代码:
@Override
protected void onPreExecute() {
Intent myIntent = new Intent(mContext, Explanation.class);
mContext.startActivity(myIntent);
View inflater = View.inflate(mContext, R.layout.explanation, null);
mProgressDialog = (ProgressBar) inflater.findViewById(R.id.Explanation_ProgressBar);
}
@Override
protected void onProgressUpdate(Integer... values) {
mProgressDialog.setProgress(values[0]);
}
xml:
<ProgressBar
android:max="100"
style="?android:attr/progressBarStyleHorizontal"
android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:id="@+id/Explanation_ProgressBar"
android:layout_height="wrap_content"></ProgressBar>
注意:进度条位于onPreExecute()中调用的Activity I的布局中。我想通过AsyncTask更新它。这可能吗?为什么不更新?
答案 0 :(得分:3)
要更新进度对话框,您需要从publishProgress(...)
致电doInBackground
。
检查AsyncTask doc
答案 1 :(得分:1)
doInBackground线程无法访问UI线程。 onProgressUpdate允许您将更新发布到UI线程。这就是您的代码应该是这样的:
@Override
protected Boolean doInBackground(String... strings) {
this.publishProgress(progress);
}
@Override
protected void onProgressUpdate(Integer... values) {
mProgressDialog.setProgress(values[0]);
}