surfaceDestroyed什么时候被调用

surfaceDestroyed方法是在SurfaceView销毁时被调用的。

当SurfaceView所在的窗口被隐藏或者关闭时,Android系统会调用surfaceDestroyed方法。这通常发生在用户按下Home键切换到其他应用,或者按下返回键关闭当前Activity的情况下。

一般情况下,当调用Activity的onDestroy方法时,surfaceDestroyed方法也会被自动调用。在这种情况下,surfaceDestroyed方法的执行顺序通常是先于onDestroy方法。

在surfaceDestroyed方法被调用时,可以执行一系列清理操作,例如释放资源、停止动画、关闭网络连接等。由于SurfaceView销毁后不再可见,任何在此时渲染到SurfaceView上的内容将不再呈现。

以下是一个示例,展示了如何在surfaceDestroyed方法中释放资源:

```java

public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {

private SurfaceView surfaceView;

private MediaPlayer mediaPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

surfaceView = findViewById(R.id.surfaceView);

SurfaceHolder surfaceHolder = surfaceView.getHolder();

surfaceHolder.addCallback(this);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

// 在这里初始化MediaPlayer并开始播放视频

mediaPlayer = new MediaPlayer();

mediaPlayer.setDisplay(holder);

try {

mediaPlayer.setDataSource("path/to/video.mp4");

mediaPlayer.prepare();

mediaPlayer.start();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

// 在这里处理SurfaceView大小变化的逻辑

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// 在这里释放MediaPlayer资源

if (mediaPlayer != null) {

mediaPlayer.stop();

mediaPlayer.release();

mediaPlayer = null;

}

}

@Override

protected void onDestroy() {

super.onDestroy();

// 如果surfaceDestroyed没有被调用,你也可以在这里释放MediaPlayer资源

if (mediaPlayer != null) {

mediaPlayer.stop();

mediaPlayer.release();

mediaPlayer = null;

}

}

}

```

在这个示例中,当用户按下Home键时,surfaceDestroyed方法会被自动调用,释放MediaPlayer资源并停止视频播放。当用户再次返回到应用时,surfaceCreated方法会被调用,重新初始化MediaPlayer并恢复视频播放。这样可以确保在应用的生命周期中,视频播放能够正确地停止和恢复。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(99) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部