看板 MobileComm 關於我們 聯絡資訊
※ 引述《BadGame (人生 歡樂易忘卻執著痛苦)》之銘言: : 安卓手機老卡頓?裝了 16 個國產 App 後我懂了….. : http://www.ifanr.com/app/818364 : 為什麼 Android 系統手機用久了會出現卡頓?AppSo(微信號 appsolution) : 今天分享的這篇文章應該能給你答案。 : 作者@ninelines 用手機分別做了 3 次實驗:安裝了 16 個國內常用 app、16 個國外 : 常用app、以及 12個國內常用 app 的 Google Play 版本,結果一定會給你留下深刻印 : 象。 : 這篇文章蠻有意思的,有興趣可以看看3個對照實驗 : 也難怪對岸幾家大公司自訂UI,會一個一個限制app,開啟麻煩 因為 太毒了~ : 沒有比基於 AOSP 的 ROM 更能代表 Android 最核心體驗的了,在這樣的系統下,不加 : 任何優化地安裝全中國裝機量最大的幾款 app 後,手機性能遭到了毀滅性的打擊。 : 看來在Google Play的規範下,還是有些保障的,不過Google自家全套的就... : 測試手機是一部5年老舊的 Xperia S(MSM8260) 昨天在這兒玩 24小時內連三篇回太長 都有說該Re文 好吧 這一篇就Re 原文內容不錯 見到'GPU呈现模式分析'就知道不會差 接下來用思想實驗(thought experiment)方式來說說好了 大家看完想想看 說的對不對 牆外的世界說到手機耗電 矛頭不外乎就指向 谷歌移動服務 Google Mobile Services (GMS) 和 臉書 雖然GMS有偶爾會發發神經的傾向 它的存在還是利大於弊 這兒就不提一般寫app對代碼做的優化 如何讓執行一件事更有效率更滑順的這一種 要說的是 為何空機安裝16個中國app後佔用的RAM 會比play商店的16個app多上不少 那是在中國開發的app因環境使然 那兒的app都習慣為自己開個service 一直沒用到它也會掛在那兒 在背景養服務的app安裝多了 就算什麼事都沒做 這些服務佔去的RAM自然也會比較多 所謂的環境因素 指有開發者們本身的習慣 還有開發者們能夠用來解決&幫助開發需求的套件 牆外不外乎是以谷歌GMS的Play services與其搭載的Firebase為主 由於絕大多數手機都搭載Play商店 app開發後了大多也在play上架 搭載Play商店的手機即擁有整套GMS提供的服務 所以開發者們寫app時大可搭配谷歌的相關SDK開發 舉些例子 讓大家看看兩方差異 Firebase有個推送服務Firebase Cloud Messaging 手機裡一般收到的推送通知是這樣來的: 安裝一個app後 它視需要向FCM註冊 有訊息想要通知你時 會先把訊息推到谷歌firebase雲 由谷歌轉手推給你 這情況下這台手機只需要隨時維持單一實時網路連接到谷歌伺服器 牆內的怎麼辦 谷歌一Bye 環境因素馬上就納進來 中國是有服務商仿製出類似推送服務 但那兒生態群龍無首 商城 服務 廠商百百家 每台手機內原生會有哪家的推送服務很難說 app開發時的方案不外乎就是把主要幾家推送服務都探測一下 看看手機上頭有哪家自己想支援的再註冊 但不論開發者怎麼挑推送服務中會遇到有用戶漏勾去 所以一般都會轉向使用最紮實的方案 就是app自行開網路連接確保收得到推送 這就是為何中國個別app都很愛跑背景服務的原因 這下子量化一下就會很可怕 若有5 app這麼做 就需要養5個services搭5個網路連接 訊息收發設計得好的 可藉HTTP/TCP代號來維持連線狀態 這樣手機休眠時WiFi及基頻 modem自行就能應付 真有訊息進來再喚醒CPU 想都知道app不會那麼安分 大多會選擇較紮實的方案 每隔幾分鐘推個"沒事 我還活著"字眼到你手機維持鏈接 你手機CPU就被喚起一回 喔 別忘了共有5個鏈接 每個刷新/推時間不一 交錯在一起就成了喚醒全家餐 這時請參考原文中三張標註'喚醒'的截圖 一目了然 第二個例子 Firebase有崩潰報告及使用習慣追踪的功能 開發者可用它來除蟲及分析用戶使用習慣 牆內這方面的情況基本上會和前頭'推送服務'差不多 app可自行構造或使用大服務商提供的SDK 如百度SDK 百度一樣要面對滲透率問題 不是每台手機開機就搭載了它們家服務 當百度SDK以app內的組件形式運行時 代表百度不是主人僅是攀附者 沒有獨立的app process來整合資料 所攀附的app一旦被移除就無法確保資料 所以養成把日誌當一般文件寫在SD空間裡的壞習慣 手機有好幾個app分別使用百度SDK時也能藉由寫入文件來進行溝通 app被刪除後也會留下這文件 該手機之後再出現使用百度SDK的app還能追踪 我見過一款相機app 除了養背景推送服務 同時還有廣告服務 自問相機修修臉練app 真有需要養這兩個服務嗎 為何開發者要這麼做 因為必須這樣才能確保推送到手機上 同時確保廣告有被顯示出來 因為廣告商自己也有個SDK 說不定還順便跑analytics來賣 上面說的相機app是從Play商店安裝的 通常小開發商會嫌要維護兩個版本麻煩 就拿相同的來Play上架 有在使用中國開發app的鄉民應該都會發現 基本上不少在Play上架的中國app都會把前面提到的習性都搬到Play商店來 反正主要用戶在國內 添加GMS支援對主要用戶沒效用 自己也不方便測試 反正外頭用戶能鏈接到牆內伺服器 乾脆就不改比較方便 接著提供Play服務的例子 fused location是個把各種定位方式統整在一起的供給服務 AOSP原生安卓只有一個純粹的location API 代表就算天氣app只想知道你所在城市用來提供天氣報告 要求一發下去就是開啟GPS定位等到手機所在十米內才有答案 原生安卓只有GPS準度的定位是因為其他方案都涉及網路服務 若把谷歌伺服器整合入原生安裝就擊潰了安卓身為開源軟體的宗旨 fused location把IP網址, 基地台, WiFi AP, GPS統整在一起 這時app大可按自己需要的精準度來獲取位置資訊 由中央把地理資訊匯總的好處是 它一直曉得你最近大致所在 若沒移動不需要重複偵測所在位置 若有app一直發出請求 直接回复它即可 不必一直回回重新定位 但是這一切勞力統統都算在Play服務頭上 這多少也是Play服務常被人罵耗電的原因吧 因為上面提到的三個例子 重工全是由它做的 究竟這該算是Play服務是惡趣味呢 還是委屈它 接下來 談狼性 真‧狼性 這是近日得知的 剛巧和這主題有些關係 棒棒糖跟隨主對手腳步把高危權限從安裝時允許改為運行時再允許 中國廠商大多是谷歌夥伴所以也沒在上頭動什麼手腳 反之他們早就把安卓4.4時期就建構好但隱藏起來的權限管理釋出給用戶使用 中國廠商當前的UX也提供比原生更'繁複'權限管理手法 這樣做是呼應長期以來app權限被過度濫用消費者興起的反彈嗎 權限被改為運行時分允許後 寡頭霸者一方狼性也顯露出來了 會發現是得知是因為有人跑去安卓issue tracker (issues 36702869) 要求再補強現有的權限管理方案 如添加欺瞞功能 因為微信, 淘寶, Alipay等app會藉由特定情境如 系統語言設成簡體中文來辨認用戶來源 一旦條件符合app開啟時就會強迫用戶允許好些高危權限 拒絕就會直接退出 因為這群體用戶已被綁死 A若不好 大可用B 這競合條款在此不適用 不過上頭說的行為可能是中國版app才這麼幹 Play商店的版本通常會比較含蓄點 原文結論說是欠優化 我的結論不一樣 廠商, 網路服務商, app商店各自肚肠 安卓系統開發方向及app開發工具都不在他們能掌握下 沒有一位說得上話的有能力發能箝制app開發者 各自看待這事的角度都不同 自不會是谷歌/蘋果這種領導者心態想要維護整個系統生態的角度 廠商要買手機 應用戶需要UX加了一堆權限運行管理 這方案典型以硬制硬 網路服務商要海量資料及廣告 不會理你手機忙不忙 電量多不多 商店要賣app app上架越多越好 理會它們在幹什麼呢 就算想限制app行為舉止最終也不會執行 因為開發者大可跑去另一個商店上架 環境使然。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.51.8.123 ※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1494407727.A.195.html
natsugo : 本篇催生者幫推XD 05/10 17:18
nk950357 : 推專業 雖然看不太懂 05/10 17:29
Seventhsky : 我很同意這篇的說法XD 沒有統一來管自然就雜亂了 05/10 17:38
hyghmax1202 : 推 難怪小米推出同時喚醒的機制 一直喚醒CPU當然會 05/10 17:49
hyghmax1202 : 耗電啊XD 05/10 17:49
kevin0727a : 趕快推,不然別人以為我不懂手機 05/10 18:21
tom282f3 : 看到ID先推 05/10 18:40
sDwlr : 專業文推個 05/10 18:52
tom282f3 : 同時喚醒不是小米推出的吧 記憶中android有內建(? 05/10 19:10
nk950357 : 對其喚醒是安卓幾開始內建我忘記了 05/10 19:13
jeff101234 : 好像5.0開始就有對齊喚醒了@@ 不過那時做的不好 05/10 19:15
Kismeter : 推 05/10 19:17
sam613 : GMS問題超多罄竹難書,雖然還是非用不可 05/10 19:28
SPDY : 畢竟不用GMS 各自為政/互相喚醒群魔亂舞也沒比較好 05/10 19:33
jhangyu : 推,不過沒有標點符號不太好閱讀 05/10 19:35
sam613 : 補推 05/10 19:45
blackkane : 推,真的是環境使然。 05/10 19:45
Lumia625 : 好文 可是排版看了有點不舒服 05/10 20:03
OROCHII : 現在google也都向ios靠攏了... 05/10 20:51
mainline : 一開始一起摸索 雙方發展漸漸成熟 都是用手指頭滑動 05/10 21:41
mainline : 的移動式系統 靠攏是正常的 iOS的通知 分享 鬆綁背 05/10 21:41
mainline : 景執行等向安卓靠攏 反之安卓的權限 加密 箍緊背景 05/10 21:41
mainline : 執行等也都向iOS靠攏 論這真的沒意思 05/10 21:41
hyghmax1202 : 之前有人說對齊喚醒是小米先推出的? 05/10 21:41
hyghmax1202 : http://i.imgur.com/ubgCTc7.jpg 05/10 21:41
mainline : 呃 那啥 先說對齊喚醒到底是啥 英文怎麼寫 05/10 21:55
mainline : 查了下 暈 若小米說的是真的 那他們就必須連必要準 05/10 22:03
mainline : 時alarm也給它延遲少許才辦得到 這時就會有一樣的ap 05/10 22:03
mainline : p在MIUI上就是可能遲個幾分鐘起來 真蛋疼 05/10 22:03
eric525498 : 推 05/10 22:30
iamten : 本篇簡單易懂 推~ 05/10 22:54
tennyleaz : 推推 05/10 23:03
blueash : 看得懂 只是這也太好笑了 XDDD 05/11 04:32
jimei2 : 推 所以我在這工作 但也盡量由play安裝+繁體介面 05/11 08:35
jimei2 : 而大陸版手機內權限管理確實比7.0原生更細更複雜 05/11 08:37
jimei2 : 黑白名單自己設 關螢幕馬上砍背景運行跟禁止喚醒 05/11 08:39
jyhfang : 推推 05/11 15:27
justblackJ : 不只中國app 像fb這種就算用綠守xposed也禁不了 05/11 17:46
shi21 : 推專業文 05/11 21:16
will0620 : 對齊喚醒是小米3發售時的主打功能吧 05/12 19:13