2012-04-03 47 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