android相机故障代码解决方法,关于Android Q及以上版本,选择相机拍照的图片一直Loading的问题及临时解决方案...

现象:

如题,如果多选图片,在Android Q及以上版本,选择相机拍照的图片基本会发生一直loading 的现象。

已经做过的探索:

在Android Q版本下,如果manifest的application节点中没有配置android:requestLegacyExternalStorage="true" 那么就会在PictureBaseActivity的onResult中进入Android Q处理分支内,之后会调用AndroidQTransformUtils内的copyPathToAndroidQ方法(copy图片到应用沙盒目录下)。如果选择的是相机拍摄的图片,那这个方法内的文件流读写执行起来非常慢,且跟Okio无关,换成原生FileInputStream FileOutputStream也是一样。一张1.5M的图的读写流大概要花费5-30s,如果选择的是七八张图,那么要等待2分钟。但是程序并不会ANR,如果一直等待下去,最终还是可以读写完成并正确回调的。

Android Q在manifest文件application标签下加入这句话则会回到传统存储模式,否则会强制开启分区存储

如果去掉android:requestLegacyExternalStorage="true”这个配置,并且注释掉Android Q处理分支,让Android Q下强制走非Android Q的分支,竟然也不会有任何问题。我还没弄清楚Android Q下为什么要单独处理,以及未来也不走这个分支,会存在什么样的问题(有知道为什么的可以提醒告诉我哈哈)

我现在的处理措施:

1.加入android:requestLegacyExternalStorage=“true”

2.同时开启isAndroidQTransform(false)来关闭在Android Q 拷贝至应用沙盒的操作

最后,非常的感谢作者无偿开源的这个库,代码质量很高,功能很全,而且有很好的层次设计,注释及功能都很完整,里面代码的写法我还在学习。

祝PictureSelector平安 LuckSiege平安 开源库平安

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值