【问题标题】:Activity com.exe.sample has leaked IntentReceiver android.media.MediaPlayer$1@4123c640Activity com.exe.sample 已泄露 IntentReceiver android.media.MediaPlayer$1@4123c640
【发布时间】:2015-05-22 08:11:52
【问题描述】:

我的 android 应用程序中有两个活动。我在两个活动的视频视图中播放视频。当我移动到第二个活动时,它开始在 videoview 上播放视频。但是当我返回之前的活动并尝试与 UI 交互时,我得到:

java.lang.IllegalArgumentException:接收方未注册: android.media.MediaPlayer$1@4123c640

我也得到了:

Activity com.exe.sample.Test1 泄露了最初在这里注册的 IntentReceiver android.media.MediaPlayer$1@4123c640。您是否错过了对 unregisterReceiver() 的调用?

在第二个活动中。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);
    Button b=(Button)findViewById(R.id.button1);
    VideoView videoview = (VideoView) findViewById(R.id.videoView1);
    videoview.setVideoURI(Uri.parse(url));
    videoview.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            mp.start();

        }
    });
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
        startActivity(new Intent(MainActivity.this, Test1.class));
        }
    });
}

第二个活动代码:

public class Test1 extends Activity { private VideoView videoview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.tset);
    videoview = (VideoView) findViewById(R.id.videoView2);
    videoview
            .setVideoURI(Uri
                    .parse(url));
    videoview.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            mp.start();

        }
    });

    super.onCreate(savedInstanceState);
}

【问题讨论】:

    标签: android android-mediaplayer android-videoview


    【解决方案1】:

    在 Test1.onStop() 中添加 mp.release()。 日志显示'android.media.MediaPlayer$1@4123c640'是MediaPlayer的匿名内部BroadcastReceiver类,应该在MediaPlayer.release()中注销。

    【讨论】:

    • 我无法设置 mp.release()
    • 你的意思是“不云”
    • 接收者没有release()方法。所以看起来这个提示没有帮助。
    • 我的意思是unregister
    猜你喜欢
    • 2012-04-04
    • 2018-01-26
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2017-11-13
    • 2012-07-03
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多