0916 - Today Widget 是个孱弱的家伙

今天美好的大半天,都献给了上面的家伙。

基本上,出现这个问题主要有 2 个原因:程序闪退、内存超限。

程序闪退,看似是程序本身的问题,但实际上和 Today Widget 的生命周期有关。Today Widget 基本上是个很弱的家伙,或者说,尽量少的在 Today Widget 中做事情、尽量避免后台任务,尤其是,和 UI 相关的后台任务。因为,当后台任务终于忙完、要更新 UI 时,可能 UI 已经被系统释放了,这里自然就闪退了。

内存超限方面:

  • 内存上限是多少呢?这个苹果并没有官方文档说明。从网上搜到的资料,多数说是总内存的 1%,比如对于 iPhone 6 是 10 MB,很小的值。仅供参考。
  • 在我这边,最直接就是 Core Data 造成的。Core Data 在内存使用方面是很慷慨乃至滥用的。只要一启动,就占用 4+ MB 内存,很大了。另外,Core Data 的内存对象释放机制也很不明确,我试了网上找的很多所谓优化,并没有很明显的下降;还有很多人通过测试验证 Core Data 有 Bug
  • 还是后台任务方面。其中我有一个操作:从 CloudKit 下载数据。这在大部分情况下都是没有问题的。但,在程序最开始运行时,会从网络下载大量数据,这时程序就崩溃了。

关键的,一旦 Today Widget 崩溃,基本很难恢复(对于我的程序而言),基本只能靠重启手机来重置。一旦用户发生此类问题,会非常难受。折腾了很久,我也没有很好的解决这个问题,只是尽量降低出现的概率,继续观察吧。


博客原文:0916 - Today Widget 是个孱弱的家伙

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,839评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,295评论 4 61
  • 我的微信签名是:人生如戏,戏入人生。人生不简单,与影视剧作品对比有过之而无不及。 今天工作压力来了,我看到老板,小...
    静宝sz阅读 916评论 0 0
  • 在你小时候 我是妈妈的宝贝 她忠实无怨无悔的爱着我 给我整个世界 我长大了 开始不理解她们的世界 我们产生了隔阂 ...
    布老头和他的家人们阅读 1,599评论 0 2
  • 忙碌中过了2个月,原想应该可以歇歇,没想却更加地忙碌,忙碌中落下了团队这几天的课,爬爬楼梯,看看出色的伙伴们,心中...
    喜欢就点个赞吧阅读 1,462评论 0 0