pixez-flutter icon indicating copy to clipboard operation
pixez-flutter copied to clipboard

[bug / need help]保存‘大量’图片会导致崩溃

Open TranscendMa opened this issue 1 year ago • 8 comments

使用环境

  • pixez: 0.9.39
  • android 11,2021年的系统 之后并未更新。
  • 运行内存8GB,平均可用3GB
  • 保存位置设置为外置存储,每个画师单独文件夹

具体情况

  1. 在非常早期(2022-2023年上半年左右)的版本时,我观察到的保存策略是直接写入,虽然有极小概率会导致图片损坏 但是基本没有崩溃和丢失图片的情况。
  2. 在更新过某个版本后,注意到保存的策略变更为延迟一段时间再进行写入(更新版本前后保存位置基本没有变化),即如果使用pixez保存完图片后,在数(十)秒内杀掉进程,大概率会丢失app上显示已经保存完成的图片。
  3. 在更以后的版本中,发现在一次性下载>30张图片时,有较大机会触发一长串内容类似 java.balabala 的报错,对新的下载无响应,随后应用闪退并丢失部分图片。
  4. 之后又更新了一次版本,类似上面的报错消失,但是崩溃变得频繁,只要一次性保存超过20张图的样子,就有机会直接触发闪退。经过反复尝试,保持平均30秒下载一张图的速度就不会导致闪退。

可能的原因

  • 内存不足
  • 系统版本太老,类似webview组件版本太低 注: 一样会崩溃且愈发频繁的软件包括升级新版的via浏览器,故认为有这种可能。
  • 文件(夹)数量太多,目前指定的下载目录存在4000个文件夹。不过存储卡的性能应该不是瓶颈。

基于上述原因,我不是很能确定这到底是不是一个bug。希望在看到此issue后可以改善一下保存的策略;如果是我的操作不当,请提供一些实操建议,万分感谢。

TranscendMa avatar Aug 06 '24 13:08 TranscendMa

存储方式选的是默认的吗,如果是saf确实会存在无解的效率问题,有具体提示的截图不

Notsfsssf avatar Aug 11 '24 04:08 Notsfsssf

在目前的版本中已经较难触发到报错提示了,基本都是直接闪退的。当然如果碰到了我也会尽力留存截图。 保存的 IMG_20240813_132050 相关设置如图,并行下载数已经调到3,以兼顾效率。 如果saf存在效率问题,请问有何办法回避,或者我应该降级到哪个版本之类的呢?

TranscendMa avatar Aug 13 '24 05:08 TranscendMa

通过一次性保存超过100张图片成功触发了报错。据我观测每次的报错长度似乎不是相同的。 这次提示的貌似是内存不够? IMG_20240813_133534

TranscendMa avatar Aug 13 '24 05:08 TranscendMa

附设备和app的内存使用情况:

IMG_20240813_134314

IMG_20240813_134305

TranscendMa avatar Aug 13 '24 05:08 TranscendMa

能否让保存图片的时候不占用内存,或至少不使用如此多的内存,这样也许能减少此类情况的发生🧐

TranscendMa avatar Aug 20 '24 07:08 TranscendMa

我也遇到了一样的问题,不过似乎这个问题是打开(为每个画师单独保存文件夹)导致的.并且即使没有崩溃,也经常保存到画师(1),画师(2)这种重复创建的文件夹中,我怀疑这两者间可能有关联

teglaven avatar Oct 14 '25 13:10 teglaven

这个问题直到迄今为止的安卓最新版也会生效,

teglaven avatar Oct 14 '25 13:10 teglaven

在出现批量下载(比如同时下载十个)的时候,崩溃概率和创建重复文件夹的概率大幅提升,并且实测我的xzp(4g内存)和y700(16g内存)崩溃概率差不多,所以应该不是内存的问题

teglaven avatar Oct 14 '25 13:10 teglaven