网络连接评分机制之NetworkFactory

在开机时,各个提供网络连接的对象需要向ConnectivityService注册自己,并把自己所提供的网络的分值告诉ConnectivityService。

        为了ConnectivityService便于统一管理,每一个具备提供网络服务的对象都需要创建一个NetworkFactory的子类对象,并利用该对象注册自己,以及提供自己的分值。

一、NetworkFactory介绍

        我们先来看一下该对象的属性:

        @NetworkFactory.java/*** A NetworkFactory is an entity that creates NetworkAgent objects.* The bearers register with ConnectivityService using {@link #register} and* their factory will start receiving scored NetworkRequests.  NetworkRequests* can be filtered 3 ways: by NetworkCapabilities, by score and more complexly by* overridden function.  All of these can be dynamic - changing NetworkCapabilities* or score forces re-evaluation of all current requests.* @hide**/public class NetworkFactory extends Handler {}

        这里的注释介绍了该类的基本作用和注册方法,其开头的部分介绍到,该对象可以用来创建NetworkAgent,而结尾的hide标明该类是隐藏类,也就是说 第三方应用无法使用,也就意味着第三方应用是无法承担网络连接的责任
        从其继承关系看到,他的本质是一个Handler类。
        然后我们来简单介绍一下该类提供的几个重要方法:

        //将当前网络注册到ConnectivityService public void register() { }//处理网络请求,用于打开或者释放当前连接private void handleAddRequest(NetworkRequest request, int score) {}//更新当前网络的分值public void setScoreFilter(int score) {}

        以上三个是最重要的方法,在接下来的分析中将会多次看到他们的调用。还有几个比较特殊的方法:

        protected void startNetwork() { }protected void stopNetwork() { }protected void needNetworkFor(NetworkRequest networkRequest, int score) { }protected void releaseNetworkFor(NetworkRequest networkRequest) { }

        这些方法都是protected属性,他们的作用就是在评分后,决定当前网络被激活或者释放,因此 一般都会在子类中被覆盖

        属性和方法介绍到这里,下面介绍该对象的使用。

二、NetworkFactory在数据连接中的初始化过程

        我们从数据提供者DcTracker来看NetworkFactory的初始化以及使用方法。
        简单介绍一下DcTracker,他是数据网络的提供者,承担着APN参数选择、数据业务建立与释放等作用。
        在DcTracker初始化时将会初始化数据的NetworkFactory对象:

        @DcTracker.javapublic DcTracker(PhoneBase p) {ConnectivityManager cm = (ConnectivityManager)p.getContext().getSystemService( Context.CONNECTIVITY_SERVICE);mNetworkFilter = new NetworkCapabilities();mNetworkF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud服务发现与注册的原理与实现

Spring Cloud服务发现与注册的原理与实现 一、简介1 服务发现的定义2 服务发现的意义 二、Spring Cloud服务注册与发现的实现1 Spring Cloud服务注册1.1 服务注册的基本框架1.2 服务注册的实现方式 2 Spring Cloud服务发现2.1 服务发现的基本框架2.2 服务发现的实现方式 三、Sp…

JDK8的lambda方式List多字段排序List.stream().sorted()

JDK8的lambda方式List多字段排序List.stream().sorted() 多字段排序 List<HumanDetailDownloadVO> collect dataList.stream().sorted(// 日期 倒序 Comparator.comparing(HumanDetailDownloadVO::getDate_str, Comparator.reverseOrder())// 仓id 倒序 .thenCompari…

【Java项目实战】牛客网论坛项目1 - Spring入门与初识SpringMVC

目录 Spring 入门SpringInitializrApplicationContextAwareControllerDAODAO 名称索引ServiceConfig自动装配 初识 SpringMVCHttp 请求GETPOSTHTML 渲染响应 JSON 数据 Spring 入门 SpringInitializr IDEA 专业版自带的功能&#xff0c;也可以直接搜索对应网站&#xff0c;通…

数据库概念

定义&#xff1a; 数据库&#xff08;Database 简称DB&#xff09;是持久存储有组织/可共享数据/的容器 数据库管理系统(MySQL、Oracle、DB2)是操作/和管理数据库/的软件 分类&#xff1a; 关系(型)数据库 (MySQL、Oracle、SQL Server、SQLite、DB2) 非关系(型)数据库 (Redis…

华为云 存在不支持迁移的外键解决方法

DRS 检测出源端存在不支持的外键引用操作 MySQL、GaussDB(for MySQL)为源的全量增量或增量迁移、同步场景&#xff0c;以及MySQL、GaussDB(for MySQL)为源灾备场景 表1 源端存在不支持的外键引用操作 预检查项 源端存在不支持的外键引用操作。 描述 同步对象中存在包含CASC…

git如何查看和修改用户名和邮箱

一、查看Git全局配置的用户名和邮箱 在Git中可以通过以下命令查看你的全局配置&#xff1a; git config --global user.namegit config --global user.email其中&#xff0c;git config是Git配置命令&#xff0c;--global是全局配置选项&#xff0c;user.name和user.email是我…

Unity物体查找方式

参考资料 cUnity中使用GameObject.Find、Transform.Find查找GameObject_思月行云的博客-CSDN博客 GameObject.Find 通过名字或路径查找游戏对象。 GameObject.Find("GameObject"); GameObject.Find("GameObject/ChildGameObject); 使用规范: 1.无法查找隐藏…

配置Jedis连接池

一、概述 Jedis本身是线程不安全的&#xff0c;并且频繁的创建和销毁连接会有性能损耗&#xff0c;因此推荐使用Jedis连接池代替Jedis的直连方式。 二、创建连接池 public class JedisConnectionFactory {private static final JedisPool jedisPool;static {//配置连接池Jedi…

Centos 7 通过Docker部署OnlyOffice

前言&#xff1a; 在本文中&#xff0c;我们将详细介绍如何使用 Docker 部署功能强大的协作办公套件 OnlyOffice。通过 Docker&#xff0c;您可以轻松构建、部署和管理 OnlyOffice&#xff0c;从而提高团队协作和企业办公的效率。 一、安装Docker 1、向系统添加Docker CE软件仓…

windows下运行springboot的jar包,修改替换class文件,修改配置文件application,打包

在windows下跑springboot的jar包&#xff0c;经常会用到一些命令行和操作。 1、修改配置文件&#xff08;以application.yml为例&#xff09; #提取文件 jar xvf mqtt-10.1.0.jar BOOT-INF/classes/application.yml#将文件装回jar包 jar uvf mqtt-10.1.0.jar BOOT-INF/classe…

Qt简易闹钟

配置文件 QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compi…

Json“牵手”当当网商品详情数据方法,当当商品详情API接口,当当API申请指南

当当网是知名的综合性网上购物商城&#xff0c;由国内著名出版机构科文公司、美国老虎基金、美国IDG集团、卢森堡剑桥集团、亚洲创业投资基金&#xff08;原名软银中国创业基金&#xff09;共同投资成立1。 当当网从1999年11月正式开通&#xff0c;已从早期的网上卖书拓展到网…

【JAVA】Object类与抽象类

作者主页&#xff1a;paper jie_的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和…

Linux安装nginx教程

目录 一、Nginx下载 二、安装步骤 1、在 /docker目录下新建 nginx 文件夹 2、将解压包移动到nginx目录下并解压到nginx目录 3、进入 nginx目录&#xff0c;找到 configure 4、运行 configure&#xff0c;命令 5、安装 6、查看根目录 7、进入Nginx目录下的conf文件夹…

i8080/TTL/LVDS/MIPI接口的差别

EYA-DISPLAY i8080、TTL、LVDS和MIPI都是用于数据传输的接口协议&#xff0c;但它们在传输数据类型和使用场景上存在一些差异。 i8080接口是一种并行数据接口&#xff0c;通常用于连接CPU和慢速外设。它最初被设计用于IBM的PC和AT计算机&#xff0c;现已被广泛用于各种计算机和…

VSCODE CMAKE C++ 工程调试, C++不以科学计数法输出并控制小数位数

1. VSCODE调试CMAKE工程配置1.1 修改CMakeLists.txt文件1.2. 程序中1.3. launch.json配置1.4 开始调试1.5 注意 2. C设置输出浮点数且保留位数固定 1. VSCODE调试CMAKE工程配置 1.1 修改CMakeLists.txt文件 加这一句 set(CMAKE_BUILD_TYPE "Debug")1.2. 程序中 在…

python分支结构的花样玩法(二)

除了上述的基本用法&#xff0c;还可以使用更复杂的条件表达式&#xff0c;包括使用 not 和 or 来组合条件&#xff0c;以及使用 in 和 not in 来检查元素是否在&#xff08;或不在&#xff09;某个集合中。 例如&#xff1a; pythonif not condition1 or not condition2: # …

Nginx 学习(五)Tomcat 服务器

1 案例1&#xff1a;安装部署Tomcat服务器 1.1 问题 本案例要求部署Tomcat服务器&#xff0c;具体要求如下&#xff1a; 安装部署JDK基础环境安装部署Tomcat服务器创建JSP测试页面 然后客户机访问此Web服务器验证效果&#xff1a; 使用火狐浏览器访问Tomcat服务器的8080端…

Web存储

目录 什么是 HTML5 Web 存储? 方法 cookie webStorage 会话存储 sessionStorage 本地存储localStorage 什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据。 早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服…

下单时如何保证数据一致性?

原创 哪吒 哪吒编程 2023-09-07 08:03 发表于辽宁 收录于合集#Redis11个 &#xff08;给哪吒编程加星标&#xff0c;提高Java技能&#xff09; 大家好&#xff0c;我是哪吒。 在前几篇文章中&#xff0c;提到了Redis实现排行榜、Redis数据缓存策略&#xff0c;让我们对Redis…