假设我们有以下内容(来自 Android ApiDemos):
<?xml version="1.0" encoding="utf-8"?>
<SurfaceView android:id="@+id/surface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
</SurfaceView>
MediaPlayer使用SurfaceView后,调用它的release()后,SurfaceView可以复用吗?
我试图创建一个新的 MediaPlayer 实例来重用 SurfaceView,但是在 setDisplay() 时出现以下错误:
java.lang.IllegalArgumentException: 表面已被释放
代码如下:
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(this);
mMediaPlayer = new MediaPlayer();
MediaPlayer.setDataSource(url);
mMediaPlayer.setDisplay(holder);
最佳答案
试试这个:
@Override
public void surfaceCreated(SurfaceHolder holder) {
System.out.println("===== * surfaceCreated * =====");
if(mMediaPlayer == null)
mMediaPlayer = new MediaPlayer();
mMediaPlayer .setDisplay(holder);
}
关于android - 在 MediaPlayer.release() 之后可以重用 SurfaceView 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10060021/