Я изучил документацию 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...