我不希望onCompletion被调用 [英] onCompletion isn't being called when I would expect it to

查看:60
本文介绍了我不希望onCompletion被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的父类中发布了一个MediaPlayer成员变量,启动它后,它永远不会调用onCompletion,或者至少onCompletionListener不会捕获它?我的代码可以达到这种效果

I have a MediaPlayer member variable posted in my parent class, and after I start it, it doesn't ever call onCompletion, or at least onCompletionListener doesn't ever catch it? My code looks something to this effect

mediaPlayer = Mediaplayer.create(this, currentSample);
mediaPlayer.start();

代码中的其他地方是我的onCompletionListener

elsewhere in code is my onCompletionListener

mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {      
        if (repeatFlag == true) {
            handler.removeCallbacks(sampleRunnable);
            handler.postDelayed(sampleRunnable, delay);
        }
    }   
});

我正在使用处理程序来调用sampleRunnable,因为我想以指定的延迟间隔对其进行循环.但是,似乎永远不会调用onCompletion.我对此非常肯定,因为我在onCompletion中设置了断点,该断点从不挂起程序,并且我尝试逐步执行,并且似乎从未被调用.有任何想法吗?

I'm using the handler to call sampleRunnable because I want to loop it at a specified delay interval. However, onCompletion seems to never be called. I'm quite positive of this because I've set breakpoints in onCompletion which never suspends the program, and I've tried stepping through and it never seems to be called. Any ideas?

推荐答案

    mediaPlayer.start();
    mediaPlayer.setOnCompletionListener(new OnCompletionListener() 
    {
        @Override
        public void onCompletion(MediaPlayer arg0) 
        {
            Log.v("Tag", "Completed");
        }
    });

此代码段效果很好.唯一的区别是"@Override",我不确定"@Override"是否对代码有效.

This snippet works fine. The only difference is the "@Override" and I'm not sure if the "@Override" has effect on the code.

这篇关于我不希望onCompletion被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆