我在从服务器检索数据时显示进度条,在从服务器检索数据后在图表上显示该数据,但在图表上绘制该数据时我的进度条卡住,有人知道为什么会这样吗? .....
提前致谢...
private ProgressDialog pd;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Toast.makeText(context, "Please Wait...", Toast.LENGTH_LONG).show();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
functionDrawMyData();/*in this function i am accessing activity view and drawing data on that view at time of drawing my Progress bar Freezes */
}
});
runOnUiThread(t);
pd.dismiss();
}
};
我正在使用的这个处理程序在检索数据完成后调用 然后单击按钮我正在获取数据并显示进度条
ImageButton myButton = (ImageButton) findViewById(R.id.myBtn);
pair1ChartButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pd = ProgressDialog.show(v.getContext(),"Please wait...","Retrieving data ...",true,
true,
new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialog) {
}
});
Thread t = new Thread(new Runnable() {
@Override
public void run() {
getDataFromServer();//calling function to get data from server
handler.sendEmptyMessage(0);
}
});
t.start();
}
});
最佳答案
请记住,android 在内存中保留了对 dilog 的引用。这样就不需要一次又一次地重新创建它。所以进度对话框第一次工作正常但下次挂起/卡住。
注意: android 不会清除 dilog 的内存引用,即使在关闭它们之后也是如此。
Activity
类中有一个名为removeDialog(int id)
的方法,这也会清除内存引用。
这是显示和删除对话框的方法
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch(id){
case 0:{
dialog = ProgressDialog.show(this, "",
"Loading. Please wait...", true);
return dialog;
}
}
return super.onCreateDialog(id);
}
现在只需调用 showDialog(0)
来显示对话框并调用 removeDialog(0)
来隐藏它。
关于android - 在 android 为什么我的 ProgressBar 卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322311/