Android 在单击按钮进行其他操作之前,ProgressBar不会设置为可见

Android 在单击按钮进行其他操作之前,ProgressBar不会设置为可见,android,android-mediaplayer,visibility,android-progressbar,Android,Android Mediaplayer,Visibility,Android Progressbar,我使用MediaPlayer并希望在调用方法MediaPlayer.prepare()之前显示ProgressBar(可能需要一些时间)。我尝试了AsynkTast、Thread、Handler,但只有在clickPlayButton方法末尾的所有操作之后,才会显示progressBar。我做错了什么? 谢谢 ProgressBar声明: <ProgressBar android:id="@+id/progressBar" android:layout_width="match_paren

我使用
MediaPlayer
并希望在调用方法
MediaPlayer.prepare()
之前显示
ProgressBar
(可能需要一些时间)。我尝试了
AsynkTast、Thread、Handler
,但只有在
clickPlayButton
方法末尾的所有操作之后,才会显示progressBar。我做错了什么? 谢谢

ProgressBar声明:

<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"/>

clickPlayButton()是在异步任务中还是在主线程上运行?编辑:看起来它在主活动中。我可以问一下为什么要创建线程来隐藏显示进度条吗?您也可以直接在主线程上调用
progressBar.setVisibility
方法。它位于主线程中。如果我只尝试“progressBar.setVisibility”,我会得到相同的结果。
public void clickPlayButton(View view) {
    Thread t = new Thread(new Runnable() {
        public void run() {
          h.post(updateProgress);
        }
    });
    t.start();
 //  progressBar.setVisibility(ProgressBar.VISIBLE);
   // new ProgressTask().execute();

    mTimer = new Timer();
    mMyTimerTask = new MyTimerTask();
    if(!mediaPlayer.isPlaying()){
       btnPlay.setImageResource(R.drawable.player_stop);
       try {
            mediaPlayer.setDataSource(DATA_HTTP);
                mediaPlayer.prepare();
           }
       catch (Exception e) { e.printStackTrace(); }

       mediaPlayer.start();
       mTimer.schedule(mMyTimerTask, 10, 5000);
    }
    else {
          btnPlay.setImageResource(R.drawable.player_play);
          mediaPlayer.pause();
          mTimer.cancel();
         }
  //  progressBar.setVisibility(ProgressBar.INVISIBLE);
}

Handler h = new Handler();
Runnable updateProgress = new Runnable() {
    public void run() {
        progressBar.setVisibility(View.VISIBLE);
    }
};