【发布时间】:2012-02-07 09:50:33
【问题描述】:
我正在构建一个项目,在该项目中我使用异步任务来显示进度条。 我正在使用 get() 方法等待主线程,以便我们可以在之前完成其他任务。
但是在 doInBackground 完成后会显示进度条。 我想在加载开始时显示加载栏。 当 onPostExecute 调用时它会关闭。
public class TempConverterActivity extends Activity {
pojo p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b= (Button) findViewById(R.id.btn);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showResult();
}
});
}
private void showResult() {
try {
new LoadData().execute().get();
} catch (Exception e) {
Log.e("async brix--", e.getMessage());
}
runned();
}
private void runned() {
ArrayList<String> al = p.getData();
for (String str : al){
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}
}
private class LoadData extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(TempConverterActivity.this);
protected void onPreExecute() {
dialog.setMessage("Loading data...");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
}
protected void onPostExecute(final Void unused) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
@Override
protected Void doInBackground(Void... params) {
p = new pojo();
new SoapParser(p);
return null;
}
}}
请帮忙。提前致谢。
【问题讨论】:
-
所以你想在同步过程中显示一个进度对话框吗?
-
是不是说明你的对话框显示在onpostexecute方法中了?请问你的后台任务成功了吗?
-
是的,我的对话框在 onpostexecute 方法中显示,后台任务也成功,我想在同步过程中显示一个对话框
-
我认为由于 get() 方法,它会阻止所有其他线程同时执行。它正在一个一个地运行。
标签: android progress-bar android-asynctask