use*_*134 2 android progressdialog
我正在尝试在进程运行时显示进度对话框,然后在进程完成后关闭.但是在完成该过程之前,该对话框会冻结.我需要在代码中添加什么?
这是我的代码:
final ProgressDialog dialog = ProgressDialog.show(this, "","Loading..Wait.." , true);
switch (th.getCurrentTab()) {
case 0:
dialog.show();
Handler menHanlder = new Handler();
menHanlder.postDelayed(new Runnable() {
public void run() {
for(int i = 0; i < menLV.getCount(); i++)
{
if(menBooleanArray.get(i) == true)
{
selectedFromMenList.add(menLV.getItemAtPosition(i).toString());
}
}
handler.setItemListData(WardrobeActivity.this, "Wardrobe", selectedFromMenList, "Name" , "Men" , "Type");
displayView();
drawer.closeMenu();
refreshTabWidget();
selectedFromMenList.clear();
dialog.dismiss();
}
}, 3000);
break;
Run Code Online (Sandbox Code Playgroud)
我使用对话框的方法是不是很糟糕?
任何评论将不胜感激.
Kar*_*ana 10
你的进度Bar介于两者之间,因为你在UI线程上处理繁重的任务,而在Android中,你不应该在UI线程上处理繁重的任务,而是可以使用AsyncTask如下目的:
public class MyTask extends AsyncTask<Void, Integer, Void>{
@Override
protected void onPreExecute() {
//Show progress Dialog here
}
@Override
protected void onPostExecute(Voidresult) {
//Update UI here if needed
//Dismiss Progress Dialog here
}
@Override
protected String doInBackground(Void... params) {
//Do you heavy task here
}
}
Run Code Online (Sandbox Code Playgroud)
AsyncTask经历了4个步骤
onPreExecute() 在执行任务后立即在UI线程上调用.
doInBackground(Param ...)onPreExecute()完成执行后立即在后台线程上调用.
onProgressUpdate(Progress...)调用后在UI线程上调用publishProgress(Progress...).
onPostExecute(Result) 在后台计算完成后在UI线程上调用.
并从AsyncTask如下开始:
new MyTask().execute();
Run Code Online (Sandbox Code Playgroud)