使用Timer或MediaPlayer方法?

时间:2011-08-19 18:02:44

标签: android timer media-player handler

我目前正在调用.getCurrentPosition来获取MediaPlayer的当前位置。当我运行动画时,这似乎会减慢我的UI速度。我的问题是,不是一遍又一遍地调用那个方法......最好是使用计时器并显示它,并在点击时停止/启动它?

这是我目前的代码:

  

private void startTimer(){                 线程promoThread =新线程(){

        @Override
        public void run() {

          while(media[1].isPlaying()){

          Message msg = new Message(); 

          String timer1 =
     

getTimeString(媒体[1] .getCurrentPosition());

          msg.obj = timer1;

          mHandler.sendMessage(msg); 

          }

        }


    };
    promoThread.start();
      }

  

protected final Handler mHandler = new Handler(){

  @Override public void handleMessage(Message msg) { 

      String text = (String)msg.obj;

      myText.setText(text);
}
     

};

1 个答案:

答案 0 :(得分:1)

您无需一直调用getPosition来跟踪播放时间,而只需触发该计时器并根据计时器时间更新您的UI。您还可以将一个OnInfoListener()添加到MediaPlayer以跟踪播放结束并终止计时器。

在Timer中使用runOnUiThread()更新UI,无需使用Handler。

我编写了这样一个定时器,每200mS发射一次并更新我的计数器用户界面,没有任何问题。