[非官方补丁]RSP-19552 10.2.2 的 Android 程序在退出时出错的问题非官方补丁

访问官方QC地址

问题原因:该问题是由于程序退出时,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 实例,就解决这个问题了。

分享到: