我有以下代码,其中不显示进度对话框。
@Override
public void onCompletion(MediaPlayer arg0) {
TrackAnalysis a = null;
File file = new File(songs.get(index).path);
final Track track;
try {
track = echoNest.uploadTrack(file, true);
final ProgressDialog dialog2 = ProgressDialog.show(MainGameActivity.this, "Analyzing...", "Please wait...",
true);
dialog2.setCancelable(true);
new Thread(new Runnable(){
public void run(){
try{
Thread.sleep(3000);
}
catch (Exception e){
e.printStackTrace();
}
dialog2.dismiss();
}
}).start();
track.waitForAnalysis(30000);
a = track.getAnalysis();
Log.i("TUTAJ", a.getTempo().toString() + track.getArtistName() + track.getTitle());
} catch (EchoNestException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
OnCompletion方法来自重载的MediaPlayer.OnCompletionListener。
我的问题是为什么进度条不显示?当我将ProgressBar代码放入onClicked方法时,它可以正常工作。
答案 0 :(得分:0)
在设置onCompletionlistener之前,检查是否在媒体播放器上调用start。 on clicked方法不需要媒体播放器在其设置之前启动。
答案 1 :(得分:0)
您需要在主线程上运行与UI相关的代码。您可以使用runOnUiThread
或使用Handler
。 Android开发者网站的API指南部分提供了许多示例。请查看Processes and Threads开始。