
源码
文章平均质量分 81
工程师阿杜
拓荒人
展开
-
Wifi服务框架介绍(原)
本文简要介绍WIFI服务的主要框架以及运作机制。 WIFI框架主要涉及到以下几个对象:WifiService、WifiManager、WifiServiceImpl、WifiStateMachine等。下面来介绍这四个对象的内在联系。一、WIFI服务的初始化 WIFI服务的初始化分为两个部分,WifiService的初始化和WifiManag原创 2015-09-08 15:09:45 · 15374 阅读 · 5 评论 -
Android短信发送流程之普通短信发送(原)
我们先来看最简单的流程入手分析,即收件人只有一个,而且不是长短信的情况。一、地址有效性检测 当点击发送按钮时,触发onClick事件: @ComposeMessageActivity.java public void onClick(View v) { if ((v == mSendButtonSms原创 2015-12-12 08:25:59 · 7360 阅读 · 1 评论 -
Android短信发送流程之多收件人发送(原)
前面的《Android短信发送流程之长短信发送》中介绍了长短信对于普通短信的区别,而对于多收件人的情况,在SmsMessageSender的queueMessage()方法中我们了解到,发送之前,将多收件人的短信进行拆分,放入"content://sms/queued"队列中,在接下来的流程中,将会在SmsReceiverService中通过sendFirstQueuedMessage()方法取出原创 2015-12-12 08:54:44 · 3366 阅读 · 1 评论 -
Android短信发送流程之长短信发送(原)
从前面《Android短信发送流程之普通短信发送》流程看到,长短信与普通短信的流程从SmsManager的sendMultipartTextMessage()方法开始区分,现在我们来看长短信的流程: @SmsManager.java public void sendMultipartTextMessage( String destinationAddress, Str原创 2015-12-12 08:41:06 · 4305 阅读 · 1 评论 -
Android短信发送流程(原)
在之前的《Android短信接收过程源码分析》一文中我们介绍了Android平台短信接收流程,本节我们来梳理短信发送流程。 本文的代码来自于Android L源码。 短信发送流程中,需要完成以下几件事务: 1、有效性检测 2、短彩信分离 3、长短新分离 4、权原创 2015-12-09 11:25:46 · 2054 阅读 · 0 评论 -
Qualcomm平台qcril初始化及消息处理流程(原)
本节主要来介绍Qcril的初始化流程以及消息在Qcril中如何传递。Android平台不同厂商的AP侧可以相同,但是Modem侧肯定会有很大的差异,RILC要解决一个问题就是适配不同厂商的Modem,为了达到兼容性要求,Android在AP与Modem之间搭建了RILC的框架,由不同的Modem厂商将自己的协议连接到AP侧。对于高通平台来说,他的RILC就是QCRIL。原创 2016-01-30 17:58:35 · 13534 阅读 · 2 评论 -
electron-vue架构解析2-生产环境打包过程分析(原)
目录我们先从生产环境打包流程来分析。 从package.json文件入口来看打包命令和调用的脚本: "scripts": { "build": "node .electron-vue/build.js", "build:darwin": "cross-env BUILD_TARGET=darwin nod原创 2018-06-11 10:52:07 · 3651 阅读 · 1 评论 -
electron-vue架构解析3-开发环境启动流程分析(原)
这一节我们来看开发环境的启动流程。该框架主要修改是对开发环境的优化,包括了于开发环境的配置文件隔离,主进程和渲染进程配置文件隔离,编译过程提示等功能,因此这一节内容才是整个框架的核心。 我们从开发人员用到的启动命令说起。 从package中我们看到启动命令就是:"dev": "node .electron-vue/dev-runner.js",也就是在终端使用npm run dev...原创 2018-06-11 14:01:48 · 7379 阅读 · 1 评论 -
electron-vue架构解析4-页面元素渲染过程分析(原)
前面介绍了整个环境的创建过程,这一节我们来看具体页面渲染的过程。 由于页面渲染都是在渲染进程完成的,我们就从渲染进程的配置文件来看入口在哪里。 前面介绍过,渲染进程公用了两个配置文件,一个是electron-vue/dev-client.js,他负责在界面上提示当前的编译步骤,而另一个配置文件在webpack.renderer.config.js中定义:let rendererConfig...原创 2018-06-11 14:11:33 · 3304 阅读 · 4 评论 -
数据业务建立流程之发起网络连接过程(原)
经过前面这些过程,网络连接所需要的条件就全部准备就绪,接下来就是等待网络接入。 我们把网络接入过程简单分为三个阶段: 触发阶段 ----该阶段是由各种不同事件触发的,比如SIM载入完毕、PS域Attach成功、通话结束、APN改变等,该阶段的最终都是要调用setupDataOnConnectableApns()方法;原创 2015-11-03 10:47:08 · 10190 阅读 · 5 评论 -
Android数据业务发起流程(原)
本节我们来介绍手机的数据网络连接建立过程。 所谓数据网络就是使用手机SIM卡上网,该上网方式需要满足两个条件:选择并激活合适的APN参数,PS域已经处于ATTACH状态。 下面我们分四节来分别介绍Android L上数据业务的发起流程。 《数据业务建立流程之DcTracker创建过程》 《数据业务建立流程之常规APN参数的创建原创 2015-11-02 16:03:47 · 5698 阅读 · 0 评论 -
数据业务建立流程之DcTracker创建过程(原)
一、DcTracker介绍 DcTracker是Telephony框架中负责数据业务的核心(类似于GsmCallTracker是通话业务核心,GsmServiceStateTracker是网络CS业务的核心),所有对数据网络的请求(打开关闭数据开关、切换数据卡、修改APN参数等)都会发送到该处理中心来处理。本节所涉及的大部分代码也都在该对象中。下面我们先来看该对象的初始化原创 2015-11-02 16:19:39 · 10205 阅读 · 2 评论 -
网络连接评分机制之NetworkFactory(原)
在开机时,各个提供网络连接的对象需要向ConnectivityService注册自己,并把自己所提供的网络的分值告诉ConnectivityService。 为了ConnectivityService便于统一管理,每一个具备提供网络服务的对象都需要创建一个NetworkFactory的子类对象,并利用该对象注册自己,以及提供自己的分值。一、NetworkFactory原创 2015-10-08 13:51:53 · 10348 阅读 · 1 评论 -
网络连接评分机制之再谈WIFI与数据切换过程(原)
前面几节介绍了网络评分机制的运行流程,下面我们再次通过案例来梳理一下评分机制在使用过程中的体现。 用户原本在用数据上网,但是如果到了一个有WIFI的环境,并连接上了WIFI,此时用户的手机将会自动断开数据网络,这是如何做到的呢? 当用户来到WIFI环境时,如果连上了某个WIFI,那么此时的WIFI状态机将会进入L2ConnectedState状态,然后会更新当前原创 2015-10-08 14:26:49 · 7709 阅读 · 8 评论 -
网络连接评分机制之NetworkMonitor(原)
本节介绍一个比较特殊的流程,就是网络可用性对评分的影响。 该影响主要体现在,当一个网络连接建立时,系统将用该连接Ping一个Google的网站来判断该连接是否真的可以上网,如果不可以,那么就会扣掉该网络40分,从而可能导致该网络的评分低于其他网络评分,下面来看详细过程。一、NetworkMonitor来源 在前面我们分析过,当某个Networ原创 2015-10-08 14:17:36 · 14129 阅读 · 1 评论 -
连接管理的评分机制介绍(原)
在前一节《Framework中的连接管理机制》中简单介绍了连接管理的大致框架,包括ConnectivityManager、ConnectivityService、NetworkAgent等对象之间的关系以及消息流走向,本节在这些知识的基础上介绍连接管理的核心机制,即连接管理中的评分机制。 Android可以提供数据业务的对象主要有:移动数据网络、WIFI、蓝牙、网线等,这些连接本原创 2015-10-08 11:08:50 · 4785 阅读 · 5 评论 -
网络连接评分机制之NetworkAgent(原)
前面介绍了开机过程中各个网络提供者的初始化过程,其实就是创建自己的NetworkFactory,并将其注册到ConnectivityService。而在介绍NetworkFactory的时候,我们看到该类的官方注释中有这么一句描述: "A NetworkFactory is an entity that creates NetworkAgent objects."原创 2015-10-08 14:06:32 · 12865 阅读 · 1 评论 -
Framework中的连接管理机制(原)
上一节《Wifi服务框架介绍》介绍了WIFI的大致框架,本文主要介绍连接管理中的几个重要角色,包括:NetworkInfo、NetworkAgent、ConnectivityService、ConnectivityManager等。 为了便于讨论,本文选取一个具体问题展开分析,那就是:当当前的网络连接变为不可用时,系统如何自动切换其他可用的网络连接的。 我们知道原创 2015-09-21 17:40:25 · 19523 阅读 · 9 评论 -
数据业务建立流程之APN参数的激活(原)
APN参数在前面《数据业务建立流程之常规APN参数的创建》一文中已经都被创建完毕并存入mAllApnSettings的数组中,但是这些APN参数默认都是没有被Enable的,只有当APN被Enable之后,该APN才可以被使用,下面我们就来看如何将一个APN参数激活。 APN的Enable是通过TelephonyNetworkFactory中的needNetworkFor()方法原创 2015-11-03 10:33:28 · 6311 阅读 · 0 评论 -
数据业务建立流程之常规APN参数的创建(原)
区别于前面的紧急APN,这里的APN参数主要指常规的SIM卡APN参数,手机在上网时必须传递正确的APN参数给运营商才可以接入移动网络,而常规APN参数的创建是由监听器触发的。 前面在DcTracker初始化过程中注册了大量监听器,其中有两个监听器可以触发APN的创建过程:1、SIM载入完毕;2、APN改变。这两个事件所导致的APN创建流程也都是类似的,分别是:原创 2015-11-02 16:35:52 · 9074 阅读 · 2 评论 -
electron-vue架构解析1-序言(原)
目录 [toc]本系列文章将介绍electron-vue前端框架的作用、结构、使用方法。electron-vue是SimulatedGREG基于vue-cli搭建的Vue+Webpack+Electron脚手架,可以用来开发跨PC平台的应用,源码地址在这里。 其主要功能/特色包括:主进程和渲染进程配置文件分离代码热更新详细的Log输出除了必备的Electron、Vue、We...原创 2018-06-11 10:47:08 · 3421 阅读 · 0 评论