我目前正在调用.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); }
};
答案 0 :(得分:1)
您无需一直调用getPosition来跟踪播放时间,而只需触发该计时器并根据计时器时间更新您的UI。您还可以将一个OnInfoListener()添加到MediaPlayer以跟踪播放结束并终止计时器。
在Timer中使用runOnUiThread()更新UI,无需使用Handler。
我编写了这样一个定时器,每200mS发射一次并更新我的计数器用户界面,没有任何问题。