Android 8 开机动画简单分析 1.由于是初步的学习所以用了一个比较老的安卓8所以肯定和Android新版本有出入。如果高版本不一样的话只能说是版本差异了。2.liunx内核启动的第一个进程就是init进程是surfaceflinger系统服务的父进程。在编译的时候呢 surfaceflinger的 Android.mk里有这么一行,根据参考得知这个是把surfaceflinger.rc装到init.rc里。LOCAL_INIT_RC。LOCAL_INIT_RC : surfaceflinger.rc具体是怎么装的呢这么装的在这个文件下build/core/base_rules.mk说实话很复杂看不懂我菜。ifndef LOCAL_IS_HOST_MODULE # Rule to install the modules companion init.rc. my_init_rc : $(LOCAL_INIT_RC_$(my_32_64_bit_suffix)) $(LOCAL_INIT_RC) ifneq ($(strip $(my_init_rc)),) my_init_rc_pairs : $(foreach rc,$(my_init_rc),$(LOCAL_PATH)/$(rc):$(TARGET_OUT$(partition_tag)_ETC)/init/$(notdir $(rc))) my_init_rc_installed : $(foreach rc,$(my_init_rc_pairs),$(call word-colon,2,$(rc)))然后在运行的时候就会在这个地方也就是init程序读取surfaceflingersystem\core\init\init.cpp2.什么时候启动surfaceflinger呢在下面这个文件里有启动时间 ,参考文章:init.rc./system/core/rootdir/init.rc由于这个surfaceflginger是class core的所以在boot的时候就随着core的启动也启动了。3.什么时候启动的开机动画呢在这个surfaceflinger的init函数里有这样一个线程:mStartPropertySetThread这个线程里有个方法设置了开机动画的属性使得开机动画启动了。bool StartPropertySetThread::threadLoop() { // Set property service.sf.present_timestamp, consumer need check its readiness property_set(kTimestampProperty, mTimestampPropertyValue ? 1 : 0); // Clear BootAnimation exit flag property_set(service.bootanim.exit, 0); // Start BootAnimation if not started property_set(ctl.start, bootanim); // Exit immediately return false; }4.为什么一设置这个property属性就开机动画了呢是因为在init.cpp里的main方法里开启了一个这个服务。start_property_service();这个服务可以读到property_set的发送这里有个epoll的知识点相当于用手机点外卖然后转到handle_property_set_fd这个方法里有一个函数handle_control_message(name.c_str() 4, value.c_str());这个函数呢就是会启动开机动画void handle_control_message(const std::string msg, const std::string name) { Service* svc ServiceManager::GetInstance().FindServiceByName(name); if (svc nullptr) { LOG(ERROR) no such service name ; return; } if (msg start) { svc-Start(); } else if (msg stop) { svc-Stop(); } else if (msg restart) { svc-Restart(); } else { LOG(ERROR) unknown control msg msg ; } }总结一下:init启动 -拉起surfaceflinger - surfaceflinger执行init方法- 执行startPropertySetThread-设置开机动画属性-开机动画启动。

相关新闻

最新新闻

AI熟肉视频制作全流程:从语音识别、字幕翻译到4K压制

AI熟肉视频制作全流程:从语音识别、字幕翻译到4K压制

如果你最近刷到过“4K/AI熟肉”这种标题,可能会和我第一次看到时一样好奇:一条外语视频是怎么被翻译成字幕,还能保持4K画质,看起来像专业压制组做过一遍后期。这里先明确一个定义:熟肉,指已经完成字幕翻译、…

2026/8/31 11:45:02
Delphi VCL界面美化:SmartEffects 3.61安装、调用与避坑指南

Delphi VCL界面美化:SmartEffects 3.61安装、调用与避坑指南

简介:本资源是面向Delphi中高级开发者的专业级视觉效果增强组件包,专为Delphi 13(Florence)及兼容版本设计,解决Windows桌面应用界面美化与交互反馈不足的痛点。Almediadev SmartEffects VCL 3.61提供阴影、渐变、边框…

2026/8/31 11:45:02
AI独立逆向VMP样本实测:知识满分手活为零

AI独立逆向VMP样本实测:知识满分手活为零

AI 能不能替代人工完成 VMP 样本的逆向和脱壳?这是很多做二进制安全、游戏安全、软件安全、CTF 的人在 2025 年反复问的问题。VMP 全称 VMProtect,是一种常见的代码虚拟化保护方案,它会把原本的 x86 指令翻译成自定义字节码,程序运…

2026/8/31 11:45:02
框架选型实战:用性能基准与工程实践评估Rust、Java、Go、Python框架

框架选型实战:用性能基准与工程实践评估Rust、Java、Go、Python框架

先说结论:市面上凡是标题里写“史上最牛”“吊打 Rust”“碾压现有框架”的帖子,基本都可以先打个问号。 这次我们不是来争论某个项目到底能不能“吊打 Rust”,而是把这类夸张标题当成一个技术问题来拆解:一个框架凭什么说自己强?用什么指标验证?如果它是一个真实开源项目,我…

2026/8/31 11:45:02
AI作业批改系统怎么搭?从拍照到数据闭环的完整实践

AI作业批改系统怎么搭?从拍照到数据闭环的完整实践

把批改从“当天晚上”变成“课后十分钟”,这个价值足够动人。大多数老师都有过这样的经历:白天上完三四节课,晚上还要抱着上百份作业回家批改。选择题还好,真正耗时间的是填空题、计算题和简答题。以数学作业为例,一份…

2026/8/31 11:45:02
视觉优先多模态RAG:让土木标准图纸实现智能问答与合规检查

视觉优先多模态RAG:让土木标准图纸实现智能问答与合规检查

如果拿一叠土木标准图纸去问大模型“这个排水节点标高是否满足规范”,你很快会发现传统文本 RAG 基本帮不上忙。图纸上的结构构件、尺寸标注、图例符号、材料表几乎全是视觉信息,PDF 抽出来的文本要么是乱的,要么大量遗漏。PlanSightRAG 正是…

2026/8/31 11:40:01