gpt4 book ai didi

android - 是否可以手动销毁SurfaceView?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:35 28 4
gpt4 key购买 nike

即使调用了 Activity 的 onPause,我的 SurfaceView 也没有被销毁。

我正在处理中的线程

public void surfaceCreated(SurfaceHolder holder) {
if (mGameThread.getState() == Thread.State.TERMINATED) {
createGameThread(getHolder(), getContext());
}
mGameThread.setRunning(true);
mGameThread.start();
}


public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
mGameThread.setRunning(false);
while (retry) {
try {
mGameThread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}

作为 hack,我必须在 onResume 中检查线程的状态,如果线程已经终止,我将完成 Activity

protected void onResume() {
Log.d(mLogTag, "onResume()");
super.onResume();
if (mGameThread != null) {
if (mGameThread.getState() == Thread.State.TERMINATED) {
finish();
}
}

}

不幸的是,无法将线程处理从 surfaceDestroyed 和 surfaceCreated 移动到 Activity 的 onPause() 和 onResume()。是否可以在 onPause() 中手动销毁 SurfaceView 并在 onResume() 中重新创建它?

最佳答案

您可以在您的 View 上动态添加表面 View 。

示例:layout.xml

    <FrameLayout
android:id="@+id/fragment_file_videoplayer_surface_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>

主 Activity .java

FrameLayout fl_surfaceview_container = 
(FrameLayout)findViewById(R.id.fragment_file_videoplayer_surface_container);

// Add surfaceView on Framelayout

SurfaceView videoSurface = new SurfaceView(getActivity());
fl_surfaceview_container.addView(videoSurface);

//if remove or destroy surfaceview

fl_surfaceview_container.removeAllViews();

关于android - 是否可以手动销毁SurfaceView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com