[LayaAir 1.0]微信小游戏下,一些手机出现资源加载失败问题

引擎版本1.7.22
 
有一些手机上出现小游戏退出再进入后,一张图片都加载不出来的情况。(第一次进入游戏期间,图片可以正常加载)
经过排查发现,加载流程当中,先是检查getFileInfo,获取到的是null,即图片在本地存储不存在。
然后进入下载流程,文件下载成功后,在MiniFileMgr.copyFile方法内。
if((isAutoClear &&  (fileUseSize + chaSize + data.size) >= totalSize))
此判断被跳过(即认定为存储没有达到50M上限),导致没有调用onClearCacheRes方法清理存储,
但是后续的fs.copyFile调用,却失败返回,信息如下:
{errMsg:"copyFile:fail copyFile: fail the maximum size of the file storage limit is exceeded"}
应该是因为实际本地存储已满,导致图片加载失败。
 
推测原因,是否是因为小游戏的50M本地存储实际上已满,但是游戏内统计的存储总大小因为某种原因,出现了偏差,并没有达到50M?
是否可能存在某些特定情形下,文件绕过游戏内存储管理,直接写入本地存储的情况。
或者说是个别文件的大小误差导致的?
 
请教如何处理和避免发生此问题。
 
如果只是因为历史的问题版本,导致的本地存储存在脏数据,从而导致的这个问题,请教如何清理微信小游戏50M本地缓存?尝试过删除小游戏图标(通过小程序助手,进入小游戏后,创建的体验版图标),并没有作用(只要再进入登录界面,下载极少资源,还是会返回这个maximum错误信息,说明存储肯定没有被有效清理)
 
非常感谢!
小游戏加载问题.png 错误信息.jpg
已邀请:

Aar0n

赞同来自:

微信小游戏 rmdirSync 这个接口清理

何东

赞同来自:

直接调用 MiniAdpter.removeAll() 后退出小游戏,那么再次加载资源就会失败
解决办法,通过遍历删除文件的deleteFile,然后是onSaveFile的回调返回当前filesListObj['fileUsedSize'],然后判断直到 ==0 ,直到所有文件都删除完毕再执行退出小游戏的操作,再次加载就不会有问题
猜测是因为删除是异步的,但是执行原命令后文件可能删除,但是laya本地缓存列表并没有清空,导致下一次加载的时候还是从本地加载,并不会从网络再次加载资源,而本地资源已经删除,所以再怎么加载都是失败的

要回复问题请先

商务合作
商务合作