Android handler.postDelayed 正在阻止我的媒体播放器顺利播放歌曲?

标签 android

嗨,我是 Android 编程的新手,我在构建媒体播放器应用程序时几乎不需要帮助,我在其中使用搜索栏来更新进度,如下所示:

 Handler handler = new Handler();
    paly.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    s_player.start();
                    p_bar.run();
                }
            });

Runnable p_bar = new Runnable() {
        @Override
        public void run() {
            start_time = s_player.getCurrentPosition();
            s_bar.setProgress((int) start_time);
            handler.postDelayed(p_bar, 100);

        }
    };

所以这段代码在 100 毫秒后更新了 sekkbar,但是歌曲播放不流畅???

最佳答案

我在这里发现了一个错误,它可能与问题有关,也可能无关。

  Runnable p_bar = new Runnable() {
    @Override
    public void run() {
        start_time = s_player.getCurrentPosition();
        s_bar.setProgress((int) start_time);
        handler.postDelayed(p_bar, 100);

    }
};

在 p_bar 中,您在 run() 方法中调用 postDelayed,而 postDelay() 会将可运行对象添加到 MessageQueue,而 run()当在队列中到达此 Runnable 对象时,系统将调用 Runnable 的方法。

所以就像一个循环,你可以运行,postDelay会调用run(),run()会调用postDelay()....

所以请不要在run方法中调用postDelay()。

关于Android handler.postDelayed 正在阻止我的媒体播放器顺利播放歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482052/

相关文章:

android - 调试器似乎无法连接到 Android FM 应用程序

android - 在方法 ALTBeacon 中运行 BeaconManager.bind 时出错

android - TextView一直显示文字

android - 工具栏无法正常工作

android - GL_MAX_TEXTURE_SIZE 较低的 Android 设备上的纹理不佳

android - 按下后退按钮后如何解决 IntentReceiverLeaked

android - 无法在真实设备 Android 中运行 IBM Worklight 应用程序

android - 如何在textview android上设置多次点击

android - 模拟器上未收到 Firebase 消息

android - 断言 Mockito 模拟对象被设置为 null