handler.postDelayed无法正常工作(android eclipse)

时间:2015-03-07 17:27:56

标签: java android multithreading

我试图在媒体播放器中播放一组声音后延迟,以便它不会重叠。我已经尝试过thread.sleep并且它有效,但问题是我有一个声音停止的按钮,但由于thread.sleep,它没有工作所以我搜索并尝试替代方式,我可以延迟没有锁定UI,我想出了handler.postDelayed,但它无法正常工作。有没有人可以帮我解决这个问题?提前谢谢。

这是我的代码:

protected void managerOfSound() {
    int size = tempq.size();
    for (int i = 0; i < tempq.size(); i++) {
        String u =tempq.get(i);

    //WHOLE
        if (u.equals("a4")){

            mp = MediaPlayer.create(this, R.raw.a4);
            mp.start();
            final Runnable r = new Runnable() {
                public void run() {

                    handler.postDelayed(this, 2000);
                }
            };

1 个答案:

答案 0 :(得分:1)

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    // stuff you wanna delay
  }
}, 2000);  

postDelayed(Runnable r,long delayMillis)会将 Runnable 添加到消息队列中,以便在经过指定的时间后运行。 runnable将在连接此处理程序的线程上运行(例如UI线程)。时基是 uptimeMillis()。深度睡眠所花费的时间会给执行带来额外的延迟。

参考:Android API documentation