本篇博客主要以Android O的代码为例,分析一下清除应用数据的流程。 一、UI部分 从手机的设置界面进入到应用管理界面,选中某个应用后,可以看到清除数据的按键。 按键对应的代码定义于AppStorageSettings.java中。 界面加载时的代码如下: private void setupViews() { ........... //初始化对应的按键 mClearDataButton = (Button) ((LayoutPreference) findPreference(KEY_CLEAR_DATA)…

2017年11月22日 0条评论 0点热度 阅读全文

我们知道Android中的广播(Broadcast)主要用于应用间的通信,这种通信机制依赖于Binder通信机制及AMS的参与。 当我们想实现应用内部组件之间的一对多通信时,广播机制的效率和开销可能无法满足要求。 这个时候我们可以使用第三方提供的开源库,例如EventBus等, 也可以使用Android支持库提供的LocalBroadcastManager。 本篇博客主要记录一下LocalBroadcastManager的基本用法, 同时分析一下LocalBroadcastManager的源码,看看其功能实现的原理…

2017年2月23日 0条评论 6点热度 阅读全文

一、前言 本文旨在总结Android N中数据业务在框架侧的流程, 主要包括APN加载、数据卡选择、长连接拨号、短连接拨号等。 目前框架侧的分析,侧重于AOSP相关的源码。 同时,考虑到拨号与去拨号流程涉及的类基本相似, 在理解拨号流程的基础上,可以比较容易地掌握去拨号的流程, 因此本文不单独分析去拨号涉及的流程。 最后,由于整个数据业务涉及到的细节相当多,文字有时难以进行有效地表述, 而且受限于个人的能力,对流程的梳理难免会有遗漏。 因此本文仅作为研究代码的参考和记录信息,所有流程的详细内容还是以代码为准。 图1…

2017年1月13日 0条评论 0点热度 阅读全文

一、基于Rild的通信架构 一般智能手机的硬件架构都是两个处理器: 一个处理器用来运行操作系统,上面运行应用程序,这个处理器称作Application Processor,简称AP;另一个处理负责和射频无线通信相关的工作,叫Baseband Processor,简称BP。 在Android系统中,Rild运行在AP上,它是AP和BP在软件层上通信的中枢。 目前通过Rild,AP和BP的通信方式可以分为两种: 第一种是AP发送请求给BP,BP响应并回复AP。此时,BP通过Rild回复的请求被称为solicited R…

2016年9月18日 0条评论 0点热度 阅读全文

一、Vold工作机制 Vold是Volume Daemon的缩写,它是Android平台中外部存储系统的管控中心,是管理和控制Android平台外部存储设备的后台进程。其功能主要包括:SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。 如上图所示,Vold中的NetlinkManager模块接收来自Linux Kernel的uevent消息。 NetlinkManager将这些消息转发给VolumeManager模块。VolumeManager会对应做一些操作,然后把相关信息通过CommandListener发送给…

2016年9月12日 0条评论 0点热度 阅读全文