2024年Android Freezer_cachedappoptimizer,2024年最新HarmonyOS鸿蒙架构师面试题

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

Android Q 开始,谷歌引入了cgroup抽象层,搭配使用任务配置文件,来屏蔽底层cgroup调用细节,向上提供API。cgroup抽象层编译成库libprocessgroup。抽象层通过往cgroup的文件节点写入相应的值,来触发kernel的回调。

最终kernel cgroup机制的freezer控制子系统真正实现了冰冻进程的功能。

一个进程从前台运行到被冰冻的旅程

2 Framework 上层

2.1 代码路径及流程

frameworks/base/services/core/java/com/android/server/am/OomAdjuster.java
frameworks/base/services/core/java/com/android/server/am/CachedAppOptimizer.java
frameworks/base/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp
frameworks/base/core/java/android/os/Process.java
frameworks/base/core/jni/android_util_Process.cpp 

2.2 OomAdjuster更新进程adj的场景

 static final String OOM_ADJ_REASON_NONE = OOM_ADJ_REASON_METHOD + "_meh";
 static final String OOM_ADJ_REASON_ACTIVITY = OOM_ADJ_REASON_METHOD + "_activityChange";
 static final String OOM_ADJ_REASON_FINISH_RECEIVER = OOM_ADJ_REASON_METHOD + "_finishReceiver";
 static final String OOM_ADJ_REASON_START_RECEIVER = OOM_ADJ_REASON_METHOD + "_startReceiver";
 static final String OOM_ADJ_REASON_BIND_SERVICE = OOM_ADJ_REASON_METHOD + "_bindService";
 static final String OOM_ADJ_REASON_UNBIND_SERVICE = OOM_ADJ_REASON_METHOD + "_unbindService";
 static final String OOM_ADJ_REASON_START_SERVICE = OOM_ADJ_REASON_METHOD + "_startService";
 static final String OOM_ADJ_REASON_GET_PROVIDER = OOM_ADJ_REASON_METHOD &#
### 关于 `GlobalSettingsProto.CACHED_APPS_FREEZER_DISABLED` 的定义及作用 #### 背景说明 在 Android 系统中,`CACHED_APPS_FREEZER_ENABLED` 和 `CACHED_APPS_FREEZER_DISABLED` 是用于控制缓存应用冻结功能的关键配置项。这些选项通过全局设置 (`global settings`) 来管理设备上的应用程序行为。 当提到 `GlobalSettingsProto.CACHED_APPS_FREEZER_DISABLED` 时,它通常表示禁用缓存应用冻结的功能。具体来说: - **启用状态**: 当该功能被启用时(即值为 `"enabled"` 或其他激活标志),系统会利用 cgroups 抽象层来冻结某些后台进程,从而减少资源消耗并优化性能[^1]。 - **禁用状态**: 如果将其设为 `"disabled"`,则意味着取消这种冻结机制的应用,允许所有缓存中的应用正常运行而不受限制[^4]。 #### 实现细节分析 从实现角度来看,在代码层面可能涉及如下逻辑处理: ```java // 设置缓存应用冻结器的状态 public void setCachedAppFreezerState(String state) { Context context = this.mContext; ContentResolver resolver = context.getContentResolver(); // 将指定状态写入到全局设置表单里 Settings.Global.putString(resolver, Settings.Global.CACHED_APPS_FREEZER_ENABLED, state); } ``` 上述方法展示了如何动态调整此特性的工作模式——无论是启动还是停止其运作过程均依赖于此函数调用的结果反馈给操作系统内核部分进一步执行相应操作步骤完成整个流程闭环设计思路清晰明了易于维护扩展性强等特点使其成为现代移动终端软件开发领域不可或缺的重要组成部分之一[^2]. 另外需要注意的一点是关于路径差异方面的问题描述清楚表明不同状态下所影响的具体文件位置有所区别:对于处于冷冻状况下的实例而言它们会被记录至特定子目录下;反之如果属于解冻类别的话就会回到上级通用型别的存储区域去进行统一管理以便更好地满足实际应用场景需求变化灵活适应各种复杂环境挑战不断追求卓越品质表现始终站在行业前沿引领未来发展方向做出更大贡献创造更多价值回报社会大众期待已久的美好愿景早日变成现实造福全人类共同进步繁荣昌盛万古长青永不衰败辉煌成就永载史册流芳百世名垂千古! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值