Android 消息循环在应用开发中会经常涉及,我以前也分析过。不过那个时候分析的还是以很老的 Android 源码来进行的,并且只是分析了 Java 层的代码,当时的文章为:Android 消息循环分析。而 Native 层,以及一些新增的功能,都没有涉及,今天再读源码,对其进…
之前的文章分享的是去安庆博物馆,在第二天,朋友推荐了集贤时空这个地方,便约着一起去了。 集贤时空位于集贤北路上,由原来的白鳍豚水泥厂改造而成。进去里面会发现里面的商业设施还不完善,许多空间都还在招租,旁边还有二期正在施工,现在也不需要门票。 停完车,看到入口大门,就能感受到满满的…
媳妇家在离安庆不远,过个江就到了,因此安庆经常去,不过去安庆也主要是去逛商场和吃饭。之前呢也去过附近的乌龙溪和菜子湖,安庆市区的除了菱湖公园别的也都没去过了。这次国庆过来,就去了一下安庆博物馆、集贤时空和倒扒狮街。本文先介绍一下安庆博物馆的这一部分。 对于安庆博物馆感兴趣也是今年…
九月学生开学,台风来袭,合肥地震,股票上涨。开了一夜的车到达皖南农村后,稍作休息,有空来写一写九月的月报。 游玩 九月没有出远门去玩,月初周末去了一次崇明岛,东滩湿地公园转了一下,这里是鸟类保护生态园,但是确没看到什么鸟,里面的一些设施也有一些荒废,不过环境还不错,到这露营还不错…
之前分析的是从 InputChannel 中读取 Event,并且向后传递,进行消费和处理的过程。但是之前的部分呢,事件如何产生,事件怎么进入到 InputChanel 当中的,事件又是如何跨进程到达 App 进程,这里继续来分析。 以上为 system 进程的流程的简化图,这里…
对于应用开发者的我们来说,经常会处理按钮点击,键盘输入等事件,而我们的处理一般都是在 Activity 中或者 View 中去做的。我们在上一篇文章中分析了 View 和 Activity 与 Window 的关系,其中的 ViewRootImpl 和我们的事件传递息息相关,上文…
Activity 是四大组件中和 UI 相关的那个,应用开发过程中,我们所有的界面基本都需要使用 Activity 才能去渲染和绘制 UI,即使是 ReactNative,Flutter 这种跨平台的方案,在 Android 中,也需要一个 Activity 来承载。但是我们的 …
老家在皖北农村,一年回不了几次,上次过年回去的,这次中秋想着回家看看老爹,就回去看了看。正好也记录一下回去的所看所感。 人 中秋节的节味是越来越淡了,因为大部分的人都在外打工,现在这个节点跟过年比农村依然很冷清。但是跟平时比还人还要多一点点,因为有些住在县城的人,中秋这天还跑回来…
Activity 的启动分析,很大一块需要了解的是 Activity 的 Task 管理,以及启动过程中 Task 的决策,在之前分析启动流程中,关于 Task 处理的部分,我这里是简化掉了很多的,今天再来分析一下。 入口与计算启动参数 在之前分析 Activity 的启动中,已…
Activity 是 Android 中四大组件使用最多的一种,不准确的说,一个 Activity 就是一个独立页面的承载,因此看 Android 系统的源码,Activity 的启动也是必须要去阅读的。今天的文章就来介绍 Activity 的启动。因为之前的文章已经分析了 Cl…
Android 应用进程的启动,简单来说就是从 zygot 进程 fork 出来一个新进程,并对其进行一些初始化。这样做系统的一些代码和资源等等就不需要重复加载,一些环境变量也都不需要重新设置,可以说是很巧妙的设置。下面就来具体分析一下其初始化过程。 启动时机 应用进程的启动,一…
前面介绍的通过 ServiceManager 添加服务和获取服务,这些服务都是有名称的,我们可以通过 ServiceManager 来获取它。除此之外 Android 系统中还有一类 Binder 服务是匿名它,它们如何让客户端获得代理对象,并且使用呢,本文就一探究竟。 AIDL…
通过 ServiceManager 添加服务和获取服务分别为 addService 和 getService,两者流程上其实是有一些类似的,其中我们可以看到 binder 通讯的全过程。为了让内容更有意义,添加服务选择从 Java 层的代码触发,获取服务则选择从 Native 层…
之前已经分析过获取 ServiceManager 了,不过那是在使用端,在分析使用 ServiceManager 去获取服务或者添加服务的时候发现,我使用的 Android Studio for Platform 默认没有把 ServiceManager 的源码导入。并且同时我们…
阅读 Android 系统源码,Binder 是绕不过去的东西,前面看 ContentProvider,Activity 都有 Binder 的身影,因此决定还是先把 Binder 的部分看一看。本文主要简单介绍一下 Binder 的历史和它的基本架构,介绍 Binder 的 S…
8 月将结束,秋天已经到来,酷暑还未结束。把小朋友送到学校,才有时间又来回顾一个月。如题所示,博客折腾了许多,也体验了一下黑神话,详细见下文。 黑神话:悟空 悟空上线,全网热议,每个群里都有人在讨论,似乎身边的每个人都在玩。对于这种现象级的国产三 A 大作,肯定要支持一下。然而,…
之前已经分析了启动应用安装 ContentProvider,使用时获取 ContentProvider,我们这里再分析一下使用 ContentProvider 查询数据已经监听 ContentProvider 数据变化的情况。 查询数据 上次的文章已经介绍了使用 query 的方…
之前已经分析过在应用启动的时候安装 ContentProvider 的流程了,现在我们再从使用者的角度看看是怎样去拿到 ContentProvider 的。 在使用 ContentProvider 的时候,我们通常会使用 Context 拿到 ContentResolver,然后…
每个人都有很多密码,有人用脑记,有人用纸记,也有很多的工具帮我们记。之前我一直使用 Keepass,在之前的文章介绍过。平时输入密码的场景最多的是网页中,目前 keepass 的网页插件只能说是能用的程度。前段时间给 openwrt 上面装上了 docker,也想着在家搭一个密码…
ContentProvider 是 Android 应用开发的四大组件之一,并且源码相对于其他几个也是比较简单的。因此我们先来看看它的源码。ContentProvider 的使用我们会涉及到外部程序调用应用的 ContentProvider 来查询数据,也有监听数据的变化,以及 …