OnCompletion方法中的进度对话框

时间:2014-05-20 17:35:57

标签: android

我有以下代码,其中不显示进度对话框。

@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方法时,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

在设置onCompletionlistener之前,检查是否在媒体播放器上调用start。 on clicked方法不需要媒体播放器在其设置之前启动。

答案 1 :(得分:0)

您需要在主线程上运行与UI相关的代码。您可以使用runOnUiThread或使用Handler。 Android开发者网站的API指南部分提供了许多示例。请查看Processes and Threads开始。