在 android 中为什么我的 ProgressBar 冻结?

sav*_*avy 5 android progress-bar

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

提前致谢...

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();           
    }
};  
Run Code Online (Sandbox Code Playgroud)

我正在使用的这个处理程序在检索数据完成后调用,单击按钮我正在获取数据并显示进度条

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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

And*_*lva 0

这是因为您甚至在关闭或关闭对话框之前就开始更新 UI。这就是你的progressDialog冻结的原因。

所以像这样改变你的代码,

     pd.dismiss();  
    runOnUiThread(t);
Run Code Online (Sandbox Code Playgroud)