R
RSSOK!
全部文章
共 377 篇

发现好内容

检索全部订阅源文章 · 更新于 2026-10-27 04:46
当前显示第 16 / 19 页 清除条件
Android源码分析:Activity启动流程Task相关分析
Activity的启动分析,很大一块需要了解的是Activity的Task管理,以及启动过程中Task的决策,在之前分析启动流程中,关于Task处理的部分,我这里是简化掉了很多的,今天再来分析一下。 入口与计算启动参数 在之前分析Activity的启动中,已经看到了关于处理Task的代码是在ActivityStart当中的startActivityInner方法当中,这个方法有不少入参,先捋一遍: resultTo为调用的Activity的mToken(IBinder) ActivityRecord r, //新创建的Record,包含calling信息和要打开的ActivityInfo等 A
摄影 码农明明桑 · 2024-09-13 17:57
Android源码分析:Activity启动流程分析
Activity是Android中四大组件使用最多的一种,不准确的说,一个Activity就是一个独立页面的承载,因此看Android系统的源码,Activity的启动也是必须要去阅读的。今天的文章就来介绍Activity的启动。因为之前的文章已经分析了ClientTransaction,因此我们对于AMS调用Activity的生命周期和启动有所了解。并且我们也已经分析过了Binder,对于跨进程通讯我们也比较清楚了,不需要细看。我们也分析了应用进程的启动,我们分析Activity启动过程,就不需要去关注应用进程的启动了。有了这些基础,分析Activity的启动会容易一点点。 发起启动Acti
摄影 码农明明桑 · 2024-09-11 22:20
Android源码分析: 应用进程启动分析
Android应用进程的启动,简单来说就是从zygot进程fork出来一个新进程,并对其进行一些初始化。这样做系统的一些代码和资源等等就不需要重复加载,一些环境变量也都不需要重新设置,可以说是很巧妙的设置。下面就来具体分析一下其初始化过程。 启动时机 应用进程的启动,一般是在创建四大组件,比如说启动Activity,Service,使用ContentProvider,有广播需要处理,这些情况需要创建进程。在我们分析的代码当中,除了这几种情况,BackupAngent也会涉及到创建App进程。 启动进程调用的为AMS当中的startProcessLocked方法, 我们注意看的话,AMS当中还有
摄影 码农明明桑 · 2024-09-09 20:11
Android Binder源码分析:AIDL及匿名服务传输
前面介绍的通过ServiceManager添加服务和获取服务,这些服务都是有名称的,我们可以通过ServiceManager来获取它。除此之外Android系统中还有一类Binder服务是匿名它,它们如何让客户端获得代理对象,并且使用呢,本文就一探究竟。 AIDL 介绍 AIDL全称为Android接口定义语言,是Android系统提供的一款可供用户用来抽象IPC的工具,它提供了语法让我们来定义跨进程通讯的服务接口,也就是.aidl文件,它也提供了工具,帮助我们把定义文件专程目标语言的代码。 我们自己使用AIDL创建的服务,或者一部分系统内的服务,比如IWindowSession、IAppli
摄影 码农明明桑 · 2024-09-07 17:57
Android Binder源码分析:添加服务和获取服务解析
通过ServiceManager添加服务和获取服务分别为addService和getService,两者流程上其实是有一些类似的,其中我们可以看到binder通讯的全过程。为了让内容更有意义,添加服务选择从Java层的代码触发,获取服务则选择从Native层触发。 添加服务 我们以添加ActivityManagerService为例分析添加一个Service。首先先画个简单的流程图,介绍涉及到的类和调用的方法,不过步骤进行了省略,详细看后面的代码解析。 ServiceManagerProxy请求添加Service 其代码在ActivityManagerService的setSystemProc
摄影 码农明明桑 · 2024-09-06 19:22
Android源码分析:ServiceManager启动代码解析
之前已经分析过获取ServiceManager了,不过那是在使用端,在分析使用ServiceManager去获取服务或者添加服务的时候发现,我使用的Android Studio for Platform默认没有把ServiceManager的源码导入。并且同时我们不知道ServiceManager的服务端是怎么启动,怎么响应的,因此决定还是需要分析一下这块的代码。 首先简单画了一下启动的流程,如下图所示(Entry表示我们的调用入口,也就是后面所说的main函数): sequenceDiagram autonumber Entry->>+ProcessState: initWithDriver
摄影 码农明明桑 · 2024-09-05 20:41
Android源码分析:Binder概述与ServiceManager获取
阅读Android系统源码,Binder是绕不过去的东西,前面看ContentProvider,Activity都有Binder的身影,因此决定还是先把Binder的部分看一看。本文主要简单介绍一下Binder的历史和它的基本架构,介绍Binder的ServiceManager我们在使用的时候如何去拿到它,同时推荐一些Binder的学习资料。 Binder简介 对于普通的Android的应用开发来说,进程的概念是被弱化的。这得益于系统已经帮助我们把Activity,ContentProvider,Broadcast,Service等涉及到跨进程的组件做了很好的封装。我们知道Android也是基
摄影 码农明明桑 · 2024-09-04 19:09
八月月报-折腾不停歇
8月将结束,秋天已经到来,酷暑还未结束。把小朋友送到学校,才有时间又来回顾一个月。如题所示,博客折腾了许多,也体验了一下黑神话,详细见下文。 黑神话:悟空 悟空上线,全网热议,每个群里都有人在讨论,似乎身边的每个人都在玩。对于这种现象级的国产三A大作,肯定要支持一下。然而,却没时间玩,这十来天也只玩了一小会,牯护院打过去了,广智打了十几把还没过,就暂时搁置下来了。之前电脑上的游戏主要是玩回合制的比较多,这个类型的游戏之前很少,种种原因,觉得难度还挺大。 游戏画面精美,里面的碑文都能够清晰可见汉字,值得夸赞。各种建筑据说是按照很多中国的古建筑建模,即使是我这种游戏手残党也值得进入游戏游山玩水。
摄影 码农明明桑 · 2024-09-02 13:39
Android源码分析: ContentProvider查询以及数据变化监听分析
之前已经分析了启动应用安装ContentProvider,使用时获取ContentProvider,我们这里再分析一下使用ContentProvider查询数据已经监听ContentProvider数据变化的情况。 查询数据 上次的文章已经介绍了使用query的方法,并且已经介绍完了通过acquireProvider获取到ContentProvider,如果是是本地应用的话拿到的是Transport对象,如果是查询其他应用(不严谨的说法,其他应用也要排查userId不同,且不共享签名),则拿到的是ContentProviderProxy,这里我们要分析的查询是其他应用的情况,因此我们需要关注C
摄影 码农明明桑 · 2024-08-29 18:51
Android源码分析: 使用场景获取ContentProvider分析
之前已经分析过在应用启动的时候安装ContentProvider的流程了,现在我们再从使用者的角度看看是怎样去拿到ContentProvider的。 在使用ContentProvider的时候,我们通常会使用Context拿到ContentResolver,然后在执行CURD的操作,比如我们要查询手机中的联系人,通常会这样做: 1 2 3 4 5 6 7 8 String[] projection = new String[] { Profile._ID, Profile.DISPLAY_NAME_PRIMARY, Profile.LOOKUP_KEY, Profile.PHOTO_THUMB
摄影 码农明明桑 · 2024-08-27 10:22
在家搭建VaultWarden密码管理服务
每个人都有很多密码,有人用脑记,有人用纸记,也有很多的工具帮我们记。之前我一直使用Keepass,在之前的文章介绍过。平时输入密码的场景最多的是网页中,目前keepass的网页插件只能说是能用的程度。前段时间给openwrt上面装上了docker,也想着在家搭一个密码管理服务,于是说干就干了。 密码服务能够个人搭建的就是Bitwarden了,因为在自家的树莓派上运行,因此选择了基于Rust的VaultWarden,毕竟资源消耗更少,性能也会更好点吧,它兼容Bitwarden,因此所有的客户端和浏览器插件都通用。 因为是在家里搭建要保证在外的时候,密码服务也能正常工作,因为已经有公网ip了,所以
摄影 码农明明桑 · 2024-08-22 19:33
Android源码分析: 应用启动安装ContentProvider分析
ContentProvider是Android应用开发的四大组件之一,并且源码相对于其他几个也是比较简单的。因此我们先来看看它的源码。ContentProvider的使用我们会涉及到外部程序调用应用的ContentProvider来查询数据,也有监听数据的变化,以及ContentProvider的安装。我们先来看安装部分的源码。 ContentProvider根据它的名字就知道,他是一个内容提供者,它提供了整删改查的接口,方便Android应用跨应用跨进程的数据共享,在Android系统中,相册,通讯录等等都是通过ContentProvider来共享数据让其他应用可以使用。看源码,我们需要关注
摄影 码农明明桑 · 2024-08-15 20:02
Android源码分析:ClientTransaction分析
分析Android Activity的启动过程,发现Android 在Android9.0中引入了ClientTransaction这一系列的对象,来简化system_server与App进程中处理Activity启动相关的任务。这里就来分析一下。 在服务端(system_server进程)主要有上面这些类,我们首先需要关注的就是ClientTransaction类,这个类在使用的时候主要是有以下几个成员: 1 2 3 4 private List mActivityCallbacks; private ActivityLifecycleItem mLifecycleStateRequest;
摄影 码农明明桑 · 2024-08-13 21:59
博客主题装修更新记录
现在版本的博客是三年前搭建hugo程序的时候选择的hello-friends主题,用着没啥问题,但是一直想要做点改变,最近就动手干起来了。新主题基于PaperMod,更多更新如下。 首先换了个主题,主要是因为之前的主题用到了yarn编译,每次换电脑都要重新装一下node,npm,主题好久没有修改了,新装npm的时候居然给我报错,索性就直接换一个theme。挑选了一下PaperMod比较符合我的胃口,这个theme比较简洁,没有使用第三方的js,css预编译工具,使用了hugo去做js和css的预编译。 为了与众不同,这次为我这个修改版本的主题起了个名字“Zen“。主题的基础框架来自PaperM
摄影 码农明明桑 · 2024-08-06 21:20
莫干山避暑玩水之旅
最近天气一直比较热,几天之前朋友就约了一起周末去莫干山鱼鳞坝玩水。周末早上便一起驾车前往,开启两天的玩水之旅。 第一天上午驾车前往,大约中午十二点钟到达四合村,猜想鱼鳞坝应该会有很多人,便在这里停下来的,花了十块钱把车停到村民家里。随后便拿出天幕,露营椅,在水边搭好方便遮阳。因为也没有带泳衣,我和小朋友一起都脱的只剩内裤下水游玩,同行的家属则在天幕下歇息。 这里的水深度还可以,有适合小朋友游玩的浅水,也有适合大人游泳的深水区,就是水面上没有树荫比较热,另外水中水草较多,水不太清澈。但是这一切都不能阻挡小朋友们玩水的热情。 在附近想要找到吃饭的店也没有,便在河边的小店花了30多元买了几个山寨可爱
摄影 码农明明桑 · 2024-08-05 19:54
7月小记-可能是破财消灾吧
七月即将结束,就在动笔前,一次爆胎为这个月定了调。这个月梅雨刚走,又来高温,除了上半个月出去玩了一趟,后面基本就在家待着,靠空调续命。 游玩 月初带着老婆小孩到山东玩了一趟,沿着沈海公路北上,经过日照,青岛,威海,烟台,一路上看海玩水,大人小孩都开心,山东半岛的海鲜价格也还比较实惠,吃的也很爽。具体可以看之前的博客文章👈。 回上海之后,就开始一直高温,便一直待在家里。周末去了一次浦东的金海湿地公园,去时阴天,到了却是大晴天,热的全身出汗,待了一会便大道回家了。 车损 这个月可谓是运势不佳,月初去山东玩,在海边倒车撞上了渔船的螺旋桨,因为报案问题,保险又不全赔,4s店给解决了,好奇的可以看之前的
摄影 码农明明桑 · 2024-07-31 17:44
记录再次编译Android系统的坑
之前已经多次编译过Android系统的代码,但是一直没有静下来去阅读Android源代码。最近不太忙,决定开始好好读读系统源码。这篇文章作为开篇,先记录把Android系统编译出来,并且把源码阅读的环境准备好。 首先介绍一下,这次使用的是Ubuntu22.0.4 LTS版本,起初准备使用虚拟机安装,但是映射虚拟硬盘老是出问题,还是直接搞上了Windows & Ubuntu双系统,Ubuntu安装到移动硬盘里面,插上移动硬盘就能用Ubuntu,拔掉还能使用Windows系统。为什么要用移动硬盘,因为官方说了至少要留400G空间给源码和编译所需,不过我最后测下来300G也是够的。 为什么选择Ubu
摄影 码农明明桑 · 2024-07-29 11:05
记第一次事故车险出险
提车接近一年,月初刚刚带着家人一起去山东自驾,路上自己倒车撞到渔船螺旋桨把后挡风玻璃撞碎了,才有了这次出险记录,也是人生第一次车险出险,有损失,也长记性。 平时小擦小碰都当没看到,之前一次自己把底漆都刮掉了,就自己用补漆笔补一补完事。这样做也都是担心第二年保险涨价,车友群里保险涨价的不在少数,新能源车保险价格又比较贵,而我上个月续保也是因为有违章保险未降价。因此撞到后第一时间没有想着去报案,而是联系了当地的维修店。到店了解到需要订货便联系了上海的小鹏服务中心,问了报价之后觉得还是要走保险,但是啥也没做。 在第二天回上海途中,小鹏之前联系的售后告知需要先到保险公司报案,然后就照做了,但是分配的查
摄影 码农明明桑 · 2024-07-21 17:52
想去海边-山东半岛自驾游
小朋友放暑假了,工作也不忙,而梅雨季的上海天天都在下雨,就想要来一次说走就走的旅行,奈何一家三口都病了,直到小朋友挂完三天点滴差不多好了,终于启程了。这一次简单的构思了一下目标就是一路往北跑,沿着海岸线玩水。 Day 1 日照万平口海水浴场 提前一天已经把车子送到了服务中心,把座椅通风异响和空调风道弄了一下。早上从上海的家里启程,在服务区吃个午饭充个电,下午到达日照。往海水浴场去的路上吃了此行的第一顿海鲜大餐,团购的2-3人餐,只要150,应该算是这一程最便宜的一顿了,三个人把一锅的蒸汽海鲜加上鲈鱼吃完,鲅鱼水饺和疙瘩汤就只能尝一尝味道了。随后便驾车前往海水浴场,玩到天黑透,小朋友仍然不愿意回
摄影 码农明明桑 · 2024-07-12 20:34
六月小记
不知不觉,六月已到月底,2024年已经过半。工作上无所事事,又是摸鱼的一个月,博客也没有写一篇,想着还是要记一点东西,不然就这样又苟过一个月,又没有留下任何的记忆。 手术 手术实际上是五月底所做,做的是卵圆孔闭合手术。发现卵圆孔未闭合的原因是一直有头痛的症状,发现了上海六院有一个头痛整合门诊,结果查到了别的都没有问题,唯独卵圆孔未闭合,很有可能就是因此引起的头痛,遂进行了该手术。因为是微创手术,回家一个多星期伤口差不多就回复了,正常生活没啥影响。但是现在是夏天,术后严禁烟酒,不能喝啤酒就太难受了,只好各种法子的气泡水加冰加饮料折腾喝。另外就是不能剧烈运动,这段时间一直在家窝着,也不太敢开车出门
摄影 码农明明桑 · 2024-06-29 15:52
‹ 上一页1… 14 15 16 17 18 …19下一页 ›