网易对象存储php-sdk无法使用,腾讯对象存储sdk使用不当,引发的闪退问题

昨天开发app时遇到闪退的问题,而且这次的闪退类型是我遇过的最棘手的。连上xcode时,运行没问题;断开后,闪退很频繁。

此时app的代码也有将近3000行了,要找到问题实在是难啊。

问题是这样的,app可以正常运行,一旦按下Home键或锁屏,再回到app,app的界面会僵住,再过一会儿就闪退。

有群友推荐我使用bugly,遂集成了,但是bugly后台连运行的数据都没有。可能因为我用的是swiftui,框架较新,bugly不支持。只好硬着头皮继续调试。

经过无数次的调试,遂找到了有用的规律。首先我猜测,闪退并不是崩溃,而是由于主线程长期无回应,被ios后台强行杀掉了。而连上xcode时,由于一些机制,app并不会被强行杀掉,会一直等到主线程被唤醒。所以只要找到使app僵住的原因就好了。又因为僵住出现在重回app时,所以问题应该出现在线程的挂起和唤醒上。

又经过无数次的观察,发现在使用腾讯cos sdk下载东西时,按下home键再回来,app僵住的概率较大。于是关闭大部分功能,使用cos下载大量数据,果然问题出现了。所以我推测,cos的内部每接收到一个任务,就会开启一个线程。当任务多了,ios后台挂起和唤醒它的任务量就会变大,导致主线程僵住。

那么当cos只有一个任务在执行时,会不会出现问题呢?于是我又进行了测试,发现没问题。

于是在cos上又封装了串行执行的功能,问题得到解决。不仅闪退的问题解决了,困扰我的卡顿问题也得到缓解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值