當前位置: 華文問答 > 數碼

鴻蒙系統與市面上的其他作業系統相比有哪些優缺點?

2023-11-28數碼

HarmonyOS NEXT 把 Android 系統裏最頭疼的問題——後台任務解決了。

要知道 HarmonyOS 的後台機制好在哪裏,就必須知道安卓的後台機制問題出在哪裏。

安卓的問題

在 Android 早期(5.0以前) ,對於後台任務的管理非常不規範,簡直是百鬼夜巡。系統只殺死套用啟動的 Java 行程,套用可以透過 Java 行程啟動系統管不到的 Native 行程。如果 Java 行程被系統殺死,就用 Native 行程把 Java 行程拉起來, 這樣,套用就永生不死了

所以早期安卓飽受卡頓、發熱、掉電的困擾。民間也出現了冰箱、Xposed 框架用來解決相關的問題。隨著安卓的更新,系統能根據 uid 殺死行程,上面的方法不起作用了。

另一種方法是 監聽廣播 ,比如系統時間更新、開機、解鎖、網絡狀態改變都會對套用發出廣播,套用可以利用廣播觸發拉起行程。在 Android 7.0,系統移除了許多隱式廣播,並對後台套用監聽廣播做了很多限制,這種方法也沒用了。

隨後,出現了一個非常有名的庫,叫 MarsDaemon,透過 雙行程守護 的方式實作了套用的保活。但是隨著後續的系統更新,這種方式也逐漸消亡了。

在保活上,套用開發廠商幾乎無所不用其極,有在 螢幕上顯示一個像素 保活的,有在後台 播放無聲音樂 保活的,有建立保活聯盟, 聯盟內的成員整合 SDK 互相拉起 的,當然,還有透過 py 加入廠商白名單 的。

其實安卓現在對後台任務有 WorkManager 這樣很好的支持的,但是在國內套用濫用後台任務的大背景下, WorkManager 基本被國內的客製 UI 砍廢了 。有的系統上 WorkManager 直接不能執行,能執行的一天到一天半執行一次就不錯了。

鴻蒙的做法

鴻蒙的後台任務是怎麽樣的呢?

鴻蒙把後台任務分為了四種類別: 短時任務、長時任務、延時任務、代理提醒

短時任務 :適用於即時性要求高、耗時不長的任務,例如 狀態保存 。每次最多允許三分鐘,在低電量時只允許一分鐘。每個套用每天預設只有10分鐘配額,這個配額會根據使用者使用習慣調整,套用可以透過介面查詢剩余配額。套用需要在前台或退至後台5秒內申請短時任務,否則會申請失敗。一個套用同一時刻最多申請3個短時任務。僅當套用在後台時,對套用下的短時任務計時,而且同時有多個短時任務不重復計時。比如像下面這種情況,計時就是①+③+④。

套用不能占著短時任務超時,如果 超時不走 ,系統會把套用回呼套用處理超時的方法,把套用「 請出去」 如果請不走,系統就直接「趕人」,終止對應的套用行程。

長時任務 :適用於長時間執行在後台、使用者可感知的任務,例如後台播放 音樂、導航、器材連線 等,使用長時任務避免套用行程被掛起。包括數據傳輸、音訊播放、錄音、定位導航、藍芽相關、多器材互聯、WLAN相關、音影片通話和計算任務。其中,WLAN、音影片通話只向系統套用開放,計算任務只向特定器材開放。而且,申請了DATA_TRANSFER(數據傳輸)的長時任務,系統僅會提升套用行程的優先級,降低系統終止套用行程的概率,但仍然會掛起對應的套用行程。對於上傳下載對應的功能,需要呼叫系統上傳下載代理介面托管給系統執行。

而且,套用不能掛羊頭賣狗肉,如果套用 申請了長時任務,但未真正執行申請類別的長時任務或申請類別的任務已結束,系統會對套用進行管控。 例如系統檢測到套用申請了AUDIO_PLAYBACK(音訊播放),但實際未播放音樂,系統則會終止對應的行程。

而且, 套用在任務結束之後需要主動取消任務,否則系統會強行取消 。例如使用者點選音樂暫停播放時,套用需及時取消對應的長時任務;使用者再次點選音樂播放時,需重新申請長時任務。

延遲任務 :套用退至後台後,需要執行即時性要求不高的任務,例如有網絡時非週期性主動獲取郵件等,可以使用延遲任務。當套用滿足設定條件(包括網絡類別、充電類別、儲存狀態、電池狀態、定時狀態等)時,將任務添加到執行佇列,系統會根據記憶體、功耗、器材溫度、使用者使用習慣等統一排程拉起套用。

一個套用同一時刻最多申請10個延遲任務,而且延遲任務最多允許兩分鐘,超時不走會被系統強制終止。

代理提醒 :代理提醒是指套用退後台或行程終止後,系統會代理套用做相應的提醒。適用於定時提醒類業務,當前支持的提醒類別包括 倒計時、行事曆和鬧鐘 三類。當套用退至後台或行程終止後,系統會代理套用做相應的提醒。

既然後台機制是這樣,那套用怎麽進行推播呢?在 HarmonyOS NEXT 中,所有鴻蒙原生套用全部都要接入華為 Push。像是微信\QQ這樣的套用,就沒有理由在後台駐留接收提醒了。而且,華為 Push 的能力也大大增強,不僅能夠 Push 普通的通知,還能 Push 實況窗、甚至更新桌面服務卡片的內容也不在話下。

鴻蒙 NEXT 的後台任務管理看齊 IOS,但是華為此前釋出的手機可都是安卓手機的記憶體。

這樣看來, 鴻蒙 NEXT 手機就兼具IOS對記憶體的高效利用和安卓手機的大記憶體,確實可以說是遙遙領先了。