当前位置: 华文问答 > 数码

鸿蒙系统与市面上的其他操作系统相比有哪些优缺点?

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对内存的高效利用和安卓手机的大内存,确实可以说是遥遥领先了。