首页
学习
活动
专区
工具
TVP
发布

终身开发者

专栏成员
54
文章
80663
阅读量
15
订阅数
SystemUI 开发之通知的实现逻辑(四)
今天我们来看一下 SystemUI中系统通知的实现流程,希望能解决一个问题:系统通知是如何完成监听然后显示在通知栏的? 在前面的《SystemUI开发之启动流程(一)》一文中,我们了解到 SystemUI 这个应用是由 SystemServer 启动起来的。它启动了 SystemUIService 这个 Android 服务,然后再由这个服务分别启动了 SystemUI定义的各种服务组件 例如 SystemBars, StatusBar, PowerUI, VolumeUI等等组件。本文将此出发看看系统通知是如何实现的。这里会涉及以下一些知识点:
阳仔
2023-03-02
9030
SystemUI 开发之通知 Notification 的关键 API(三)
前文已经了解了 SystemUI 中各个组件的用途,如果没有记错的话,大概有20多个组件。今天我们来看一下其中我认为最为重要的通知组件都有哪些关键 API。了解它们是我们进一步理解 Notification 实现逻辑的入口。
阳仔
2021-12-08
1.9K0
SystemUI 开发之服务组件概览(二)
在前文中已经知道 SystemUI 是由 SystemServer 启动的。更准确的说是 SystemServer 启动了 SystemUI 中的名为 SystemUIService 的服务,然后在 SystemUIApplication 中启动了所有服务组件。 这些服务组件在 config.xml 中定义
阳仔
2021-12-08
1.1K0
SystemUI 开发之启动流程(一)
常见 UI 组件有(包含但不限于,完整列表可以查看 SystemUI 服务组件列表[1])
阳仔
2021-12-08
1.4K0
100行代码拆解EventBus核心逻辑(三)
在前文的讲解中对 EventBus 的实现逻辑有了大概的理解之后,我们知道 Java 解析注解可以在运行时解析也可以在编译期间解析。由于运行时解析是通过反射来获取注解标记的类、方法、属性等对象,它的性能要受到反射的影响。因此在一些基础组件中更常见的做法是使用注解解析器技术,像 Dagger、 butterknife、 ARouter 以及本文所接触的 EventBus等框架库都是使用到了注解解析器的技术。接下来我们来实现一个注解解析器。(本文代码有点多)
阳仔
2019-12-17
5290
100行代码拆解EventBus核心逻辑(二)
前面我们参考 EventBus 的实现逻辑模仿了一个最简单的 EasyBus。这个其实也是观察者模式的实现,所以整体逻辑理解起来应该是不难的。在 EasyBus 中进行注册的时候是通过反射机制对观察者的信息进行注册,然后解析出监听接口和事件类型( onEventXXXMethod(MessageEvent)方法以及其参数)。可以看出在这个注册的过程中,使用了运行时的反射机制,这在追求性能极致的基础组件中,这是可以优化的点。那么如何优化呢?这就需要用到今天提到的注解以及注解解析器的相关技术了。
阳仔
2019-12-17
3930
100行代码拆解EventBus核心逻辑(一)
EventBus 作为一个基础的消息传递组件,了解其核心实现原理是日常开发工作之外需要做的必修课。本系列希望通过自己实现一个类似的消息传递组件 EasyBus 来理解 EventBus 的核心实现原理。
阳仔
2019-11-23
4190
从数据结构的角度上看区块链到底是什么
自从最近央视提出要发展自主区块链技术的号召以来,区块链领域又骚动了起来。程序猿是学习能力很强的群体,了解新技术是日常工作生活的一部分。作为一个从事区块链相关产品创业的从业者,今天就以数据结构的角度来看看区块链( Blockchain)技术。个人水平有限,如有错误的地方,欢迎留言拍砖。
阳仔
2019-11-19
1.2K0
Python Web Flask源码解读(四)——全局变量
Flask中全局变量有current_app、request、g和session。不过需要注意的是虽然标题是写着全局变量,但实际上这些变量都跟当前请求的上下文环境有关,下面一起来看看。
阳仔
2019-08-23
3.2K0
基于Flask开发企业级REST API应用(四)
几乎现在所有应用都会用到缓存技术,而在服务器端redis是很多实现缓存的首选技术。
阳仔
2019-08-21
5740
基于Flask开发企业级REST API应用(三)
前两章把程序的结构以及 API的协议基本上搭建起来了。本文开始不打算对每个模块接口都进行实现,因为基本上都是业务逻辑代码,而且整篇文章都把代码贴出来,那将是一个灾难。
阳仔
2019-08-15
5910
基于Flask开发企业级REST API应用(二)
本节开始项目的编码实现。首先我们来实现登录注册模块的相关 API。本项目我们是使用前后端分离的模式,在实现登录注册功能之前,假设我们的接口是开放的,那么需要确定接口校验方案。
阳仔
2019-08-06
9460
一文彻底搞懂Python可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)的概念
在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几个概念也是经常混淆,现在是时候把这几个概念搞清楚了。
阳仔
2019-08-01
5.6K0
App 组件化/模块化之路——使用SDK的思路进行模块化设计接口
在不久之前分享一篇《App 组件化/模块化之路——如何封装网络请求框架》文章介绍了我在项目中封装网络请求框架的思路。开发一个 App 会涉及到很多网络请求 API ,例如登录注册接口、用户信息接口、业务列表请求接口等等。而本文介绍的是如何模块化设计这些接口,使得项目中更好地复用代码。当然这仅仅是一家之言,欢迎留言拍砖。
阳仔
2019-07-31
1.7K0
在 Android 中如何优雅地配置私密信息
在实际的项目开发中,经常会用到一些第三方的 SDK ,而使用这些 SDK 基本上都是需要配置 APPKEY 或 APPSECRET 等信息。此外 APP 打包时需要 KEYSTORE , STOREPASSWORD 的信息。这些都是私密配置信息,不应该发布到 Github 或其它公共空间。
阳仔
2019-07-31
1.7K0
在Android中使用枚举注解而不是枚举
很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。一般地,在一个文件中定义常量
阳仔
2019-07-31
1.4K0
Android 组件化/模块化之路——在展示层搭建MVP结构
Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设计模式,它是用于展示层(Presentation)的结构。
阳仔
2019-07-31
7600
App 组件化/模块化之路——Repository 模式
Repository 这个词直译过来仓库、仓储的意思。这个意思其实也能反应出 Repository 模式作用。App 开发中少不了对数据的操作,数据的来源可能有很多种:网络、数据库、文件以及内存中的缓存。而 Repository 就相当于一个仓库管理员,管理这些数据的存储。当业务层想要获取或者存储数据时,只需要通过 Repository 的管理员进行操作。这样的好处就是:屏蔽数据来源的操作接口。对于业务层来说不必关心数据存在哪里,以及如何存储的。而且也符合我们组件化/模块化架构设计的思想。即当我们更换数据存储设备时,例如从 Android 系统 Sqlite 数据转换为第三方的数据库时,不会影响到业务逻辑。
阳仔
2019-07-31
1.9K0
App 组件化/模块化之路——如何封装网络请求框架
在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库。例如
阳仔
2019-07-31
2K0
App 组件化/模块化之路——构建开发架构思路
随着业务的发展 App 开发技术也越来越成熟,对开发者来说 App 代码量也迅速地增长到一个数量级。对于如何架构 App 已经每个开发者面临的实际问题。好的架构可以提高开发者的效率,降低维护成本。
阳仔
2019-07-31
1.9K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档