楼主:
POLAX (<><.....)
2014-10-23 10:23:33※ 引述《neotek (尼澳铁特)》之铭言:
: 看到底下推文在讨论闪退、Reload,刚好最近有研究到这方面的知识, 就回应一下
: 如果有说错还请各位版上各位高手手下留情>"<
: 关于内存这方面很多人说内存不够会闪退、Reload等等...
: iOS在这方面的做法是这样:
: 1. 当内存不足时, 会通知所有的App,请App要释放掉他们没有在使用的内存,
: (当然这方面要开发者去支援)
内存管理都在iOS
所有开启的APP
iOS会自己判断
依照每个APP的使用时间 顺序 以及各种用量等等
给每个APP一个编号顺序
(使用者把App从背景关掉 只是影响这个顺序而已
并没有一定会关掉 但iOS通常都会优先把它关掉)
当iOS在发现内存使用上需求很大时
会自己判断哪些App是开过但已经很久没用
但还存在内存中的
依照那个编号顺序 关掉该个App 把内存要回来
当内存还是不够时 就会把正在用的App给关掉了...
也就会Crash 闪退
在下面那点会说明为什么有这种情况
开发者能做的只有做好APP内状态储存
跟做好自己APP内的内存使用与释放就好了
: 2. 如果通知完, 内存还是不够的话,那么你的App就很有可能被系统终止
: (也就是闪退)
也是可以这么说啦...
不过大多都是开发者在开发没想清楚
程式没规划好 用了太多内存
或是没写好
造成用完内存没有释放 又继续用其他内存
这样当然会不够
: 3. 如果通知完,内存有被释放,而且已经足够使用,那么App就会没事,可以继续跑
: 4. 那么Reload是怎么回事? 如果有做释放动作的App
如果这里的Reload是指 App变成第一次开启时的状态了
那代表这个App在iOS的内存管理之下曾经被关掉
但使用者又开启他
所以他就从刚开启的状态开始了
(这边变成开发者要做好状态储存与回复 也就是地一点提到的)
: 下次你开App的时候可能会发现到里面的内容都要再重新加载,那是因为在上一步骤
: 内存被开发者释放掉了(为了不让App Crash呀!!),再开的时候就要重新再加载一次
: 有兴趣的可以去这边看看:http://goo.gl/gvqh4o
: 以上小小分享, 希望有帮助到各位