iOS 版的金山電池醫生是怎麼做到清緩存的?
iOS版的金山電池醫生可以清內存和緩存。清內存肯定是沒有這個許可權的,緩存似乎也沒有。但我確實在清理前後查看用量發現了變化。它是怎麼做到的?大批應用打著清內存旗號的應用為什麼能通過審核?
我不清楚金山電池醫生是怎麼做到的,也許他們用到了什麼神奇的私有 API,如有高人知道,請不吝賜教。
但其實我不用任何公開或私有 API 也能做到這點。
因為 iOS 有這樣一個功能:當系統剩餘空間不足時,iOS 會自動把所有 App 的臨時文件夾及緩存文件夾清空。
所以做一個清緩存的 App 很簡單,就只要不停地往系統里寫入垃圾數據,寫到系統剩餘空間不足時,系統自然就會把其他程序的緩存也清掉了。
清內存也可以用類似的原理,App 只需要不停地加大自己的內存佔用,系統就會自動把其他程序的內存釋放出來了(當然不能搞太猛,要處理好 Low Memory Warning ,不然搞得自己也被殺掉就不好了)。
【註:從大家的評論里提到的「清緩存時系統會報空間不足」這點來看,金山正是通過寫入大量垃圾數據這一沒什麼技術含量的手段,來逼系統清緩存的】
而這兩樣功能,說實在的都非常非常蛋疼!
先說清緩存,如果金山真的是用寫垃圾信息的方法實現的,那麼建議你絕對不要用這個功能。
因為 iPhone 的存儲晶元是有寫入次數限制的。超過一定次數則報廢。
雖說正常使用時,3、5年也不太可能出現把存儲晶元寫到報廢的情況,但沒事兒就用大量垃圾信息去虐存儲晶元則絕對是不明智的(增大了存儲晶元過早出現壞區塊的可能性)。
而且就算金山有用到什麼神奇 API,不需要大量寫垃圾信息,沒事兒手動去清緩存也是不明智的。
為什麼?因為蘋果審核時對 App 存儲信息的位置有嚴格規範。為了加快 iCloud 和 iTunes 備份速度,盡量減少需要備份的內容,蘋果規定那些非用戶生成的,可以再次下載到的內容,必須存放在臨時文件夾中。
舉個例子:一個符合蘋果規範的電子書 App,你所有下載的電子書,都是存放在臨時目錄下的。當你強制把緩存清掉後,你打開程序會發現你的書都不見了,必須重新下載——沒有免費 Wi-Fi 的時候流量可是要錢的哦——當然這還是程序寫得比較好的時候。市面上還有很多程序壓根就沒有處理臨時文件夾被系統清掉的情況,這會直接導致程序崩潰、運行不正常等諸多問題。
所以真的沒有必要去清緩存,啥時候真的覺得存儲空間不夠了,就是你清理常年不打開的 App,刪除垃圾照片和視頻的最佳時機了。
另外沒事兒去清內存,也是弊大於利的行為。
你把別的程序從內存里清掉,結果是下次你用那個程序時,所有數據都要重新載入一遍。從固態存儲載入數據是很慢的!而且也有人做過測試,這樣也是更加費電的!
已經有無數前人呼籲過無數遍,內存空在那裡並不會讓你的 App 變快!這叫浪費!內存不夠用的時候系統自然會幫你清理的!為什麼要逼系統在沒有必要的時候做沒有必要的事情呢?這不是蛋疼是什麼。
【註:Android 和 iOS 的情況略有不同。因為 Java 的 GC (垃圾回收)機制,當 Android 的剩餘內存極度不足時,程序性能可能真的會受影響。那麼 Android 上清內存究竟利大還是弊大呢?答案是我也不知道!因為它像 Windows 一樣「自由」,隨便一個不按常規出牌的 App 就有可能帶來完全不同的結果……這麼糾結且與本題無關的事情,我就不深入討論了。】
至於 App Store 上爛了大街的電池管理類 App 是否真的能優化電池壽命,請看完下面的文字自己判斷吧。
蘋果在電池管理方面的科技實力是這樣的:
大多數廠家的量產產品(包括 IBM 這種科技大牛)電池充放電壽命還徘徊在300次循環的時候,蘋果已經通過軟硬結合的手段做到500次循環了(這事兒發生在 2008 年,要是我沒記錯的話,那年的 Macbook Pro 發布時的 Keynote 里有簡單的介紹。現在隨著各方面技術的進步,充放循環普遍已經達到 1000 次的水準)。
而 99% 的在 App Store 上賣電池管理軟體的公司或個人在電池管理方面的科技實力是這樣的:根據蘋果的官方文檔給出的電池使用建議,做個幾天就能開發完的 App 來「指導」用戶該如何「管理」電池。
我不是說蘋果的電池管理演算法就是業界第一,但如果真有哪個公司有本事僅通過軟體優化就給蘋果的電池再增加100次充放循環,那這個技術肯定早就被各大硬體廠家高價買去寫入電池管理晶元了,還用做 App 來賣?
請接受用了兩年以後電池壽命下降的現實吧。
題外話:
我不是針對某個公司或個人,但我很反感此類軟體。在我眼裡就是「騙子」。
只要稍微動動腦子就知道,XX和蘋果,誰更了解 iOS,誰更了解 iPhone。
可偏偏就有人相信「蘋果故意縮短了 iPhone 的電池壽命來騙你升級」的陰謀論,而XX才是懲惡除奸的大英雄!
這個世界上會輕易相信這類陰謀論的人真的非常多,利用人們「無法驗證無效就是有效」心理的商機也真的很多。如果不擔心「生屁眼沒兒子」的話,真的滿地都是「創業」機會。。。不好意思扯遠了。
P.S. 我記得清內存原來是有 API 的,現在似乎被幹掉了?也可能原來就一直是給 Mac 用的,不好意思記不清了。如哪位高人記得,請指教!1、做一個動畫,假裝清空了來忽悠用戶:》
2、自己先佔內存,然後自己清理自己。
金山的做法是身子在移動互聯網,蛋蛋還卡殼在PC互聯網,嗯。
說白了就是強行佔用大內存,迫使系統清理掉其他非前台應用佔用的內存保證當前應用的運行。「挾天子以令諸侯」。
簡單地說就是讓系統吃到吐!
一句話:這個app是多餘的。
自己先佔滿內存,系統開始清理內存,系統清理完了之後,它再把先前占的內存釋放,內存就清理好了。(ps:其實跟你不清理沒什麼區別,反正都是系統自動清理)
因為iOS會在設備快要存滿時自動清理垃圾文件,所以金山是先製造出許多垃圾,然後iOS自動清理
清內存:動畫而已
清緩存:創建一個大文件佔滿存儲空間,iOS 檢測到空間不足會主動把各app放在緩存目錄下的文件幹掉。
只能說,金山後台真硬
簡單地說就是讓系統吃到吐!
我猜想是持續佔用內存直到出發二級內存警告,此時系統會關閉所有後台app 以達到「清理內存的目的」 ,然後再釋放自己佔用的內存
我有個辦法。你自己定期往緩存里寫點東西,然後自己清除,看上去,……額……挺管用的
可以卸載了
想必apple公司的人也清楚這點,那還怎麼讓這些軟體上榜app store? 這其中存在著什麼的利益關係鏈?
忽悠小白的吧
前台應用比後台應用優先順序高,持續申請內存就會把後台應用擠出去。
不過清理緩存唯一的用處是增大耗電量,ios除了音樂播放等幾種類型應用,其餘都是不允許在後台運行的。
清緩存真的有用嗎?就算有用有多大的效果?ios有自動清理緩存的機制,用不著吧
是不是後台程序也不用關的?這樣的話會不會影響用電量啊?
推薦閱讀:
※你為什麼會選擇 iPhone 手機?
※iPhone6s電池不耐用了換什麼電池好?
※怎麼看待oppo R13高仿iPhone X?
※蘋果7 11.2.1的系統怎麼樣?
※韓寒的手機鎖屏 44 年是怎樣弄出來的?
TAG:iPhone |