gpt4 book ai didi

android - 在 android 为什么我的 ProgressBar 卡住?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:28 25 4
gpt4 key购买 nike

我在从服务器检索数据时显示进度条,在从服务器检索数据后在图表上显示该数据,但在图表上绘制该数据时我的进度条卡住,有人知道为什么会这样吗? .....

提前致谢...

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com