我自己实现了一个 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 秒,但它实际上做的是音频文件一结束就跳转到下一个 View 。 您能否指出我错在哪里或我如何以不同方式延迟切换到另一个 Activity?
感谢每一个提示!
最佳答案
我知道为什么你的 Handler 没有延迟发布。
It is because your stopTime is 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
}
关于android - Handler.postDelayed(...) 不会延迟 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450932/