Handler.postDelayed(...)不会延迟Runnable

时间:2013-08-26 18:49:28

标签: android android-mediaplayer runnable android-handler postdelayed

我自己实现了一个OnCompletionListener,如下所示:

public class SongEndCompletionListener  implements OnCompletionListener{

    String nextView;
    Context actualActivity;
    int stopTime;

    public SongEndCompletionListener(Context activity, String nextView, int time) {
        this.nextView = nextView;
        actualActivity = activity;
    }
    @Override
    public void onCompletion(MediaPlayer arg0) {


            Handler handler = new Handler(); 
            handler.postDelayed(new Runnable() { 
                 public void run() { 
                        try {
                     Intent stopplay;
                     stopplay = new Intent(actualActivity,Class.forName(nextView));
                     actualActivity.startActivity(stopplay);    
                 } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    } 
                 } 
            }, stopTime); 


    }
}

我想让它暂停一下stopTime秒,但它实际上做的是一旦audiofile结束它跳转到下一个视图。 您是否可以指出我错误的地方或者我如何能够以不同的方式延迟切换到另一个活动?

赞赏每一个提示!

1 个答案:

答案 0 :(得分:8)

我知道为什么你的处理程序不会延迟发布。

  

这是因为你的stopTime是0。

您需要为“stopTime”设置值,否则为0。 例如,将Runnable延迟一秒钟:

stopTime = 1000; // milliseconds

或使用您的构造函数:

public SongEndCompletionListener(Context activity, String nextView, int time) {
    this.nextView = nextView;
    actualActivity = activity;
    this.stopTime = time; // you forgot this
}