Как сохранить постоянную поверхность при отображении и скрытии активности?

Я изучил документацию SurfaceView, в ней говорится, что вам нужно реализовать SurfaceHolder.Callback для работы с поверхностью. В этом случае работать с поверхностью можно только в период между вызовами SurfaceHolder.Callback.surfaceCreated() и SurfaceHolder.Callback.surfaceDestroyed(). Моя проблема в том, что я также использую собственный code с API Vulkan, и, например, когда пользователь нажимает Home, поверхность больше недействительна, что означает, что мне нужно заново создать мой конвейер. Есть ли способ избежать этого?

Пример того, как это реализовано в классе шаблона GameActivity:

Я предполагаю, что можно было бы попробовать реализовать это вообще без использования SurfaceView, но как...?

public void surfaceCreated(SurfaceHolder holder) {
        if (!this.mDestroyed) {
            this.mCurSurfaceHolder = holder;
            this.onSurfaceCreatedNative(this.mNativeHandle, holder.getSurface());
        }

    }

//  Here's my drawing process...    

public void surfaceDestroyed(SurfaceHolder holder) {
        this.mCurSurfaceHolder = null;
        if (!this.mDestroyed) {
            this.onSurfaceDestroyedNative(this.mNativeHandle);
        }

    }

//  And this is where the pipelines have to be recreated...
Афиноген
Вопрос задан14 июня 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.