2012-03-02 48 views
1

我已经学会了如何获取进度条与特定任务from here一起工作。如何在android中设置天文台的进度条?

但我在我的应用程序中使用天文钟。并基于该值我想设置ProgressBar。

那么该怎么做。 ?

我使这个线程工作。 代码:

// Start lengthy operation in a background thread   
    progressThread = new Thread(new Runnable() {    
     public void run() {     
      while (mProgressStatus < 100) {      
       mProgressStatus = doWork();      
       // Update the progress bar      
       mHandler.post(new Runnable() {       
        public void run() {        
         progressBar.setProgress(mProgressStatus);       
        }      
       });     
      }    
     }   
    }); 

    progressThread.start(); 

我知道我不得不作出的任务,连续int数据返回给progressStatus。但如何用我不知道的天文钟来做到这一点。所以请帮助我。

谢谢。

+0

为什么我对这个问题变得消极? – 2012-03-02 12:55:47

+0

这个问题有什么不对? – 2012-03-02 12:56:58

+0

你应该尝试使用睡眠(1000); – 2012-03-02 13:20:17

回答

1

你的问题似乎是你的doWork()方法(正如你在评论中提到的那样,在该方法中没有做任何事情)。正如你可以看到进度条的进展取决于从这个方法:

mProgressStatus = doWork(); 

让我们假设你的cronometer正在更新每一秒,所以进度会满100时秒就会通过。为了达到这个目的,你的doWork方法应该返回递增的数值,即1,2,3 ...到100.但是只返回这个值是不够的,因为用你当前的代码progressBar会立即被填充。
最简单的解决办法是:

mProgressStatus = 0; 
progressThread = new Thread(new Runnable() {    
    public void run() {     
     while (mProgressStatus < 100) {           
      // Update the progress bar      
      mHandler.post(new Runnable() {       
       public void run() {        
        progressBar.setProgress(mProgressStatus);       
       }      
      }); 
      mProgressStatus ++; 
      android.os.SystemClock.sleep(1000); // Thread.sleep() doesn't guarantee 1000 msec sleep, it can be interrupted before    
     }    
    }   
}); 

progressThread.start(); 

希望这有助于
谢尔盖。