Progressbar微调器不旋转

问题描述

| 谁能告诉我为什么进度条轮不旋转...我正在尝试从Web服务器下载数据时放一个进度条,到目前为止一切都还好...我可以在下载数据时设置进度条,但是问题是进度条微调器没有旋转....以下是我的进度条代码
<Progressbar 
    android:id=\"@+id/xPBar\"
    android:layout_width=\"wrap_content\"
    android:layout_height=\"wrap_content\"
    android:layout_centerInParent=\"true\"
    style=\"@android:style/Widget.ProgressBar.Inverse\"/>
这是下载代码: 在执行此方法时,我正在显示进度栏
    public void downloa@R_502_5710@rts() {
    mPBar.setVisibility(ProgressBar.VISIBLE);
    Runnable r = new Runnable() {

        @Override
        public void run() {
            if (checkNetworkStatus(getApplicationContext()) == true) {
                String alert = con.execute(ALERTS_URL
                        );
                AlertsParser parser = new AlertsParser();
                parser.parseJson(alert);
                startActivity(new Intent(getApplicationContext(),Alerts.class));
                onSuccessDownload();
            } else if (checkNetworkStatus(getApplicationContext()) == false) {
                onFailureDownload();
            }

        }
    };
    mHandler.post(r);

}
谢谢...     

解决方法

        您可能必须将其放入AsyncTask中。如果您尝试将进度条放在主UI线程中,则如果您在后台执行其他操作(如此处所述),进度条将不会移动。     ,        通过致电   mHandler.post(r) 您没有在新线程中运行可运行对象,而是将其发布到消息队列中-这意味着在主UI线程中。这会导致应用程序在下载数据时冻结。 您应该运行AsyncTask或新线程。例如在Runnable r的末尾放置类似   Runnable r = new Runnable(){
   @Override
    public void run() {
        .......
        context.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                hideProgressOnSuccess_andShowData();
            }
        });
    }
     } 然后像这样运行您的Runnable r:   new Thread(r).start(); 当然,使用AsyncTask并使用其onPreExecute和onPostExecute可以使其更加优雅。 问候, 担