2012-04-03 46 views
1

我想爲android實現一個廣播播放器(使用shoutcast流)。我想要做的是,當播放器中加載無線電流時,UI會顯示一個旋轉輪動畫。在成功加載時(只要歌曲開始播放)動畫消失。Android中的ProgressDialog沒有出現(不正確的線程處理?)

這是我正在使用的代碼。

PlayStopStreamingButton.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    Thread initializer = new Thread(new Runnable() { 

     @Override 
     public void run() { 
     Looper.myLooper(); 
     Looper.prepare(); 
     progressDialog = ProgressDialog.show(RadioPlayerActivity.this, "", "Selecting Radio Station", 
      true); 
     JukefoxApplication.getHandler().post(new Runnable() { 

      @Override 
      public void run() { 
      radioPlayerEventListener.onPlayStopStreamingButtonClicked(); 
      progressDialog.dismiss(); 
      } 
     }); 
     } 
    }); 
    initializer.start(); 

    } 
}); 

我沒有得到任何旋轉動畫。我幾乎可以肯定,我的錯誤在於不正確的處理線程。如果有人能以正確的方式出來,我將不勝感激。

編輯,這似乎工作:

PlayStopStreamingButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      progressDialog = ProgressDialog.show(RadioPlayerActivity.this, "", "Selecting Radio Station", true); 

      Thread initializer = new Thread(new Runnable() { 

       @Override 
       public void run() { 
        radioPlayerEventListener.onPlayStopStreamingButtonClicked(); 
        progressDialog.dismiss(); 
       } 
      }); 
      initializer.start(); 

     } 
    }); 
+0

我想你關閉它非常快,這就是爲什麼你看不到它。 – 2012-04-03 13:24:00

回答

0

您需要上顯示進度UI線程對話框,見下圖:

PlayStopStreamingButton.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    Thread initializer = new Thread(new Runnable() { 

     @Override 
     public void run() { 
     Looper.myLooper(); 
     Looper.prepare(); 

     RadioPlayerActivity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       progressDialog = ProgressDialog.show(RadioPlayerActivity.this, 
            "", "Selecting Radio Station", true); 
      } 
     }); 

     JukefoxApplication.getHandler().post(new Runnable() { 

      @Override 
      public void run() { 
      radioPlayerEventListener.onPlayStopStreamingButtonClicked(); 

      RadioPlayerActivity.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
          progressDialog.dismiss(); 
       } 
      }); 

     } 
    }); 
    initializer.start(); 

    } 
}); 
+0

謝謝,我不知道runOnUiThread位。但是,與此同時,我也實施了一個可行的解決方案(補充說,作爲另一個答案,如果有任何問題,請告訴我)。感謝您的時間和精力。 – rahulthewall 2012-04-03 13:32:00