Android 使用计时器或MediaPlayer方法?
我现在经常调用.getCurrentPosition来获取我的MediaPlayer的当前位置。当我运行动画时,这似乎会大大降低我的UI速度。我的问题是,与其一遍又一遍地调用该方法,不如使用计时器并显示它,然后单击停止/启动它 这是我目前的代码: 私有void startTimer(){ 线程升级线程=新线程(){ getTimeString(媒体[1].getCurrentPosition()) 以及: 受保护的最终处理程序mHandler=新处理程序(){ })Android 使用计时器或MediaPlayer方法?,android,timer,media-player,handler,Android,Timer,Media Player,Handler,我现在经常调用.getCurrentPosition来获取我的MediaPlayer的当前位置。当我运行动画时,这似乎会大大降低我的UI速度。我的问题是,与其一遍又一遍地调用该方法,不如使用计时器并显示它,然后单击停止/启动它 这是我目前的代码: 私有void startTimer(){ 线程升级线程=新线程(){ getTimeString(媒体[1].getCurrentPosition()) 以及: 受保护的最终处理程序mHandler=新处理程序(){ }) 您不需要一直调用getPos
您不需要一直调用getPosition来跟踪播放时间,只需启动计时器并根据计时器时间更新UI即可。您还可以向MediaPlayer添加一个OnInfo Listener()来跟踪播放结束并终止计时器 在计时器内使用runOnUiThread()更新UI,无需使用处理程序
我编写了这样一个每200毫秒启动一次的计时器,并毫无问题地更新了我的计数器UI。您不需要一直调用getPosition来跟踪播放时间,只需启动计时器并根据计时器时间更新UI。您还可以在MediaPlayer上放置一个OnInfo Listener()来跟踪播放结束和终止计时器 在计时器内使用runOnUiThread()更新UI,无需使用处理程序
我编写了这样一个计时器,每200毫秒启动一次,并毫无问题地更新了我的计数器界面。Thx发布问题,我今天早上向自己提问!Thx发布问题,我今天早上向自己提问!你认为这种方式会减慢我的动画吗?我不这么认为,计时器在自己的线程中运行,请不要这样做Ry大约500毫秒。你需要一个精细的谷物计数器吗?我不这么认为。在那里我有类似的应用程序,他们的计数器没有延迟地更新,动画也能流畅地运行。这就是我所困惑的。如果你需要这样的性能,你应该考虑把代码的那部分移到C++中的NDK,而不是java。他不需要T。o在NDK中进行编码。如果其他人遇到这种情况,我很明显他的问题是他只是在一段时间内拥有它()block不睡觉。他基本上可以在里面放任何东西,这会让UI结巴,因为它一直在以最快的速度运行。你认为这种方式会减慢我的动画吗?我不这么认为,计时器在它自己的线程中运行,试一下500毫秒左右。你需要细粒度计数器吗?我不这么认为。有sim卡ILAR应用程序在那里,我的计数器正在更新,没有延迟,动画也很流畅。这就是我所困惑的。如果你需要这样的性能,你应该考虑把代码的那部分移到C++中的NDK,而不是java。他不需要在NDK中编码它。对我来说,他的问题是他只是把它放在一个没有睡眠的while()块中。他基本上可以把任何东西放进去,这会使UI结巴,因为它一直在以最快的速度运行。
@Override
public void run() {
while(media[1].isPlaying()){
Message msg = new Message();
String timer1 =
msg.obj = timer1;
mHandler.sendMessage(msg);
}
}
};
promoThread.start();
}
@Override public void handleMessage(Message msg) {
String text = (String)msg.obj;
myText.setText(text);
}