- 博客(7)
- 收藏
- 关注
原创 ota升级流程浅析(重点讲述虚拟A/B)
HAL 层的具体实现(通常由芯片厂如高通、联发科编写)会去修改小系统分区(如 misc 或 attributes 标志位),将 Slot B 标记为 bootable(可引导),并将其设为首选槽位(Active)。缺点:由于升级过程中高频读写 /data 分区并进行快照合并(Merge),在性能较差的低端机上,升级后的首次开机或合并期间,手机可能会有轻微的掉帧或发热。既保留了 A/B 升级的“后台静默”、“秒级重启”和“防砖自动回滚”能力,又不需要占用双倍的物理分区,帮手机释放了巨额的存储空间。
2026-06-06 18:19:46
298
原创 Android 系统启动流程浅析
上面的zygote service配置中,执行 /system/bin/app_process64命令之后,程序就会执行到/frameworks/base/cmds/app_process/,该目录下面就是可执行文件,该路径下有app_main.cpp,最终执行的就是app_main.cpp的main方法,在AndroidRuntime的start方法中通过jni启动ZygoteInit。当内核启动完成之后,启动init进程,作为第一个系统进程,init进程有内核态转换为用户态。
2024-07-24 19:03:11
1289
1
原创 Android SystemUI之导航栏(四)
再来看Touch事件,通过sendEvent()方法可以看出,back等view的点击touch事件不是自己处理的,而是交由系统以实体按键(keycode)的形式处理的。进入导航栏的真正根布局:navigation_bar.xml,好吧又是自定义view,NavigationBarView和NavigationBarInflaterView都要仔细研读。我们来看createView()方法:以home按键为例,加载了home的button,其实是加载了R.layout.home的layout布局。
2023-08-02 16:17:00
2230
1
原创 Android SystemUI之下拉菜单栏(三)
在 QSTileHost 的构造函数里,我们主要看 tunerService.addTunable(this, TILES_SETTING);很明显,调用 tunerService 里的 addTunabe() 方法,跟进去会发现,最终的是调用的 TunerServiceImpl 里面的 addTunabe() 方法。一个实例化 Tile 的 createTile(tileSpec)。2.把创建好的TileRecord 添加的快捷面板中 mTileLayout.addTile(r)。
2023-08-01 17:59:00
1299
1
原创 Android SystemUI之StatusBar,状态栏(二)
systemui其实结构是比较复杂,里面管理各种服务,导航栏,状态栏,近期列表,下拉菜单,关机界面等,其中以导航栏和状态栏,近期列表用的比较多,也是本博文会重点讲解的内容。从结构上来讲下拉菜单和状态栏都是属于statusbar,结构树上也是属于顶层的super_status_bar.xml(StatusBarWindowView),说这么多还不如直接上图,这样大家看的比较清晰直观。
2023-08-01 14:05:35
2546
1
原创 Android SystemUI之启动流程(一)
作为Android系统核心应用,SystemUI负责反馈系统及应用状态并与用户保持大量的交互。耳熟能详的三栏:StatusBar(状态栏)、NavigationBar(导航栏)与Notification Panel(通知栏),以及Recents(近期任务界面)。有一点需要说明一下,Android 10之后近期列表的显示被移到Launcher app里面了。
2023-07-31 18:15:58
748
1
转载 通过API文档查询Math类的方法,打印出近似圆,只要给定不同半径,圆的大小随之发生改变
[java] view plain copy print?import java.lang.Math; public class MathDraw { /** * 画图函数,输入圆半径,输出圆 */ public static void paint(int r)
2017-08-11 14:33:49
2369
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅