我在我的android应用程序中有两个活动。我正在视频中播放两个活动中的视频。当我转到第二个活动时,它开始在videoview上播放视频。但当我回到之前的活动并尝试与UI交互时,我得到了:
java.lang.IllegalArgumentException:Receiver未注册: android.media.MediaPlayer$1@4123c640
我也得到了:
活动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);
}
答案 0 :(得分:1)
在Test1.onStop()中添加mp.release()。 日志显示' android.media.MediaPlayer$1@4123c640'是MediaPlayer的匿名内部BroadcastReceiver类,它应该在MediaPlayer.release()中取消注册。