2011-06-14 59 views
2

任何人都可以告诉我为什么进度条轮不旋转...我试图从Web服务器上下载数据时进度条一切都很好,直到现在...我能够设置进度条在下载数据,但问题的进度条微调不旋转....下面是我的进度条代码:Progressbar微调不旋转

<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 downloadAlerts() { 
    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); 

} 

谢谢...

+0

您下载的主线程上的数据。所有的东西都需要在一个单独的线程上完成。如果您在主线程中下载数据,则会阻止用户界面,这就是您的进度条可见但不旋转的原因。 – Varun 2011-06-14 12:40:02

+0

这些都是猜测,请发布代码,显示你如何更新。 – Nix 2011-06-14 12:42:52

回答

4

您可能必须将其放入AsyncTask。如果您尝试将进度条放在主UI线程中,那么如果您在背景中执行了其他操作,则不会移动,如here所述。

+0

链接被破坏... – RWIL 2015-11-14 13:06:48

3

通过调用

mHandler.post(R)

你没有运行可运行在一个新的线程,而是你在消息队列张贴 - 这意味着在主UI线程。这会导致应用在您的数据下载时冻结。

您应该运行AsyncTask或新线程。例如把在你的Runnable [R东西到底喜欢

Runnable的R =新的Runnable(){

@Override 
    public void run() { 
     ....... 
     context.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       hideProgressOnSuccess_andShowData(); 
      } 
     }); 
    } 

}

,然后运行您的Runnable [R这样的:

new Thread(r).start();

使用AsyncTask并使用其onPreExecute和onPostExecute,当然它可以更优雅。

映入眼帘, 丹

+0

我会检查出来... – Taruni 2011-06-14 13:03:07

+0

嘿,谢谢它现在工作....谢谢你,所以现在我的微调旋转像一个风扇....哇..大声笑.... – Taruni 2011-06-15 04:09:46

+0

@Danail。请帮我在这 http://stackoverflow.com/questions/12987880/android-progress-bar-stops-working-in-the-middle – 2012-10-30 10:25:10