问题原因:该问题是由于程序退出时,FSharedContext 被释放,而 DoFinalizeShader 调用 Valid 没有做相应的处理,结果在检查到 FSharedContext 为空时,又重新创建了 FSharedContext 造成的。
解决办法:在 Valid ->ActivateSharedContext->CreateSharedContext 这三个函数中的任意一个,加入对程序正在退出状态的检查即可。比如我们加到 CreateSharedContext 里,在 FMX.Context.GLES.Android 单元,找到 CreateSharedContext 函数,然后在开始的地方修改为下面的代码:
var AppTerminating:Boolean=false; class procedure TCustomAndroidContext.CreateSharedContext; var ASvc:IFMXApplicationService; begin if AppTerminating or (TPlatformServices.Current.SupportsPlatformService(IFMXApplicationService,ASvc) and ASvc.Terminating) then begin AppTerminating:=true; Exit; end; ...其它原来的代码不变
这样通过检查是否正在退出程序,如果退出中,就不再重新创建 FSharedContext 实例,就解决这个问题了。