SilenceLove / HXPHPicker

Photo/Video Selector-Supports LivePhoto, GIF selection, online download of resources on iCloud, and editing of photos/videos
MIT License
364 stars 74 forks source link

选择照片 程序ANR 被系统杀死 #96

Closed anddygon closed 1 year ago

anddygon commented 2 years ago

iPhone14 Pro iOS16.0.3 系统 在选择照片时发生无响应 被watchdog杀掉 看了下崩溃堆栈 发现最后是执行了requestImageData 里面的实现是同步请求数据 感觉问题应该出在这里 就是现在不知道怎么复现和解决 我觉得好像不能简单的改成异步请求 下面是堆栈信息

image

SilenceLove commented 1 year ago

应该是内部没有判断是否开启了同步,导致线程卡死了 下个版本修复

anddygon commented 1 year ago

应该是内部没有判断是否开启了同步,导致线程卡死了 下个版本修复

image

我详细看了你的修复方案,但是没有想明白为什么这样能解决问题,anr的原因是什么? 这个修复方案好像是针对主线程死锁的,希望能帮我讲解下 谢谢

anddygon commented 1 year ago

@SilenceLove 能帮解答下吗,我看到的修复方案是针对主线程死锁的 修复前的代码看不出会有线程死锁的问题

SilenceLove commented 1 year ago

之前这里确实是有问题的,开启了同步,内部就不应该回到主线程,应该调用的时候在哪个线程回调也在哪个线程 也许就是这个原因导致的吧,改了之后应该就没问题了。之前外部用调用这个方法开启同步了的话是有问题的

anddygon commented 1 year ago

之前这里确实是有问题的,开启了同步,内部就不应该回到主线程,应该调用的时候在哪个线程回调也在哪个线程 也许就是这个原因导致的吧,改了之后应该就没问题了。之前外部用调用这个方法开启同步了的话是有问题的

感谢回复,我测试下这种case