Re: [開箱] iPad Air 2

作者: 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
: 以上小小分享, 希望有幫助到各位
作者: neotek   2014-10-23 10:34:00
推^^
作者: yayax (夜夜叉)   2014-10-23 10:52:00
推^^
作者: starcraftiii (星海爭霸三)   2014-10-23 11:26:00
閃退也比當機好
作者: miayao417 (mia)   2014-10-23 11:31:00
問題是不是每個厲害的程式背後都有神人在寫像是常用的mo ptt 鄉民晚報就都很會閃退當然chrome rr3 那些大作自然就不會閃退所以其實閃退還是很嚴重的情況
作者: siro0207 (希羅)   2014-10-23 11:42:00
所以還是因為app或系統沒寫好 導致沒正確釋放記憶體以被reload 就會發生閃退
作者: SicInfit (O_o)   2014-10-23 13:27:00
據說很多初學開發者 didReceiveMemoryWarning 根本放著沒動 XD應該說好像常有人把裡面那段 placeholder 文字誤會當成代表 iOS 會自動清理了...

Links booklink

Contact Us: admin [ a t ] ucptt.com