关闭

android netd守护进程机制 --- netd分析

3 netd分析 3.1 CommandListener初始化 CommandListener的构造方法分为3大步骤: 1,父类初始化,传入netd socket FrameworkListener("netd", true) 父类FrameworkListener的构造方法如下, FrameworkListener::FrameworkListener(const char *s...
阅读(48) 评论(0)

android AsyncChannel机制 --- 双通道连接

4双通道连接分析 双通道只能是一对一的通信, 服务器端需要知道当前连接的是哪个客户端,通信双方需要建立双向连接,不区分客户端和服务端。 4.1 connecte过程 首先回忆一下单通道建立连接的过程, 1,获取服务端的Messenger对象,创建本地的Handler对象, 创建AsyncChannel对象。 2,调用本地AsyncChannel对象的 connect()...
阅读(51) 评论(0)

android AsyncChannel机制 --- 同步消息分析

3 同步消息分析 发送同步消息以及处理消息结果如下, Message replyMsg = mClientAsyncChannel.sendMessageSynchronously(MSG_SYNC_REQ); String msg = (String) replyMsg.obj; 发送同步消息的流程图如下, AsyncChannel的sendMessageSynchronous...
阅读(44) 评论(0)

android netd守护进程机制 --- Java层分析

前言: Netd是Android系统中专门负责网络管理的守护进程。NetD是网络管家,封装了复杂的底层各种类型的网络 (NAT,PLAN,PPP,SOFTAP,TECHER,ETHO,MDNS等),隔离了底层网络接口的差异,给Framework 提供了统一调用接口,简化了网络的使用。主要工作分为2个部分: 1,接收并处理来自Framework层中NetworkManagementServi...
阅读(30) 评论(0)

android AsyncChannel机制 --- 异步消息分析

2 异步消息分析 客户端一般调用sendMessage方法发送异步消息, sendMessage方法如下, mClientAsyncChannel.sendMessage(MSG_ASYNC_REQ); MSG_ASYNC_REQ是一个int值, 客户端的AsyncChannel对象的sendMessage方法如下, public void sendMessage(int what)...
阅读(37) 评论(0)

android AsyncChannel机制 --- 单通道连接

前言: AsyncChannel是android系统中的在两个Handler间用于消息传输的机制,这两个Handler可以处于同一个进程, 也可以不再同一个进程。主要用于和网络相关的跨进程通信,例如phone进程和systemserver的ConnectivityService服务, wifi进程和systemserver的ConnectivityService服务等。 AsyncChan...
阅读(38) 评论(0)

android 系统数据业务---模式切换分析(下)

5.3 RIL_REQUEST_DATA_REGISTRATION_STATE 在GsmServiceStateTracker的构造方法中,注册了一些监听事件, mCi.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null); mCi.registerForRadioStateChanged(this, EVENT_RADIO_STA...
阅读(102) 评论(0)

android 系统数据业务---模式切换分析(上)

5 setPreferredNetworkType详解 5.1 RIL处理 RIL.java中setPreferredNetworkType方法如下, @Override public void setPreferredNetworkType(int networkType , Message response) { RILRequest rr = RILRequest.obta...
阅读(104) 评论(0)

android 系统数据业务---模式

4 数据业务模式 在手机以及模块中,移动/联通/电信的信号都会有类似下面的2G/3G/4G切换,        图一 信号模式切换图 这些值的定义都在RILConstants.java中,如下, /* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */ int NETWORK_MODE_WCDMA_P...
阅读(57) 评论(0)

android 系统数据业务---关闭

3 数据业务关闭 数据业务关闭从DcTracker的onCleanUpAllConnections方法开始论述,调用流程图如下, cleanUpConnection的逻辑如下, 调用DcAsyncChannel的tearDown方法获取配置的信息,然后发送发送EVENT_DISCONNECT消息,断开网络 Message msg = obtainMessage(DctConst...
阅读(43) 评论(0)

android 系统数据业务---打开(下)

2.3状态转换 上一小节中,调用onConnect 方法拨号后就接着调用transitionTo方法进入了DcActivatingState状态, 当RIL收到RIL_REQUEST_SETUP_DATA_CALL消息时, 将向DataConnection发送 EVENT_SETUP_DATA_CONNECTION_DONE的消息. DcActivatingState的processMess...
阅读(73) 评论(0)

android 系统数据业务---打开

2数据业务打开 DcTracker的onTrySetupData调用流程图如下, onTrySetupData方法如下, protected boolean onTrySetupData(String reason) { if (DBG) log("onTrySetupData: reason=" + reason); setupDataOnConnectableAp...
阅读(49) 评论(0)

android 系统数据业务---打开/关闭概述

数据业务的打开/关闭 一般的app都可以实现数据业务的打开和关闭,例如手机里面的设置,数据业务的打开和关闭都是通过 TelephonyManager接口来实现,具体的代码如下, 设置默认卡的打开和关闭, public void setDataEnabled(boolean enable) { setDataEnabled(SubscriptionManager.getDefaultD...
阅读(33) 评论(0)

android 系统数据业务---phone进程启动

前言: 电话管理是Android 系统支持的重要的业务之一,提供接听电话,收发短信、电话薄、网络事件监听、 读取用户信息、2G/3G/4G信号切换等功能。由上到下分为4层, PHONE应用层,Telephony框架实现层, RIL层。本文基于android 5.1,架构图如下, 整个框架的调用流程图如下, 整个网络虽然涉及到的进程也比较多,但是仔细分析起来关键点没有多少。本文...
阅读(29) 评论(0)

EventBus分析--事件分发

2 事件分发 事件分发一般调用post方法,调用流程图如下, post方法如下, public void post(Object event) { //获取当前线程的postingState PostingThreadState postingState = currentPostingThreadState.get(); ...
阅读(50) 评论(0)

EventBus分析--事件的注册

前言: EventBus定义:是一个发布 / 订阅的事件总线。 这么说应该包含4个成分:发布者,订阅者,事件,总线。 那么这四者的关系是什么呢? 很明显:订阅者订阅事件到总线,发送者发布事件。 主要用于进程内部组件之间的通信。 EventBus是一个单例模式,在一个进程中只有一个对象, getDefault方法如下, public static EventBus getDefault...
阅读(48) 评论(0)

LocalBroadcastManager机制分析

前言: 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。BroadcastReceiver设计的 初衷是从全局考虑可以方便应用程序和系统、应用程序之间、应用程序内的通信。但是有时候只是给进程 内部发送广播也需要绕一大圈,有没有简单的方法呢? LocalBroadcastManager。 LocalBroadcastManager是Android Supp...
阅读(47) 评论(0)

android input子系统分析---事件层

3 核心层 核心层主要都是在input.c中处理。这里会处理各种Event,各种sensor,触摸事件,按键事件等等。流程图如下, input_event方法直接调用input_handle_event方法进行处理, void input_event(struct input_dev *dev, unsigned int type, unsigned int code, i...
阅读(46) 评论(0)

android input子系统分析---驱动层

前言: Input子系统包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序。传感器作为 一种输入设备,也是通过input系统把其数据上报给系统,或者通过input系统得到用户的配置信息。这里以传感器 为例学习input driver层。 Sensor驱动从通过I2C从寄存器中读取sensor值,然后写入/dev/input/目录下对应的文...
阅读(46) 评论(0)

android sensor 框架分析---sensor 总结

7 总结 Sensor总的框架图如下, 形象一点讲,整个Sensor的软件架构就像是水泵抽水灌溉。Service扮演电机的角色,它不断的产生抽水的动力, 并将水输送至目的地(APP),驱动扮演泵的角色,它负责完成抽水的必要准备并抽水,HAL则很像是连接电机和泵的管道。 driver可以逻辑上分为三部分,一部分支持它本身的功能,i2c读写,中断或者轮询处理。第二部分为sysfs文...
阅读(56) 评论(0)
220条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:63028次
    • 积分:2736
    • 等级:
    • 排名:第12454名
    • 原创:220篇
    • 转载:0篇
    • 译文:0篇
    • 评论:10条
    最新评论