android13(T) 网络比分机制

2023-11-21 10:44
文章标签 网络 机制 android13 比分

本文主要是介绍android13(T) 网络比分机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络比分核心类

packages\modules\Connectivity\framework\src\android\net\NetworkScore.java
packages\modules\Connectivity\framework\src\android\net\NetworkAgent.java
packages\modules\Connectivity\service\src\com\android\server\ConnectivityService.java

1、WIFI 默认分数 60

packages\modules\Wifi\service\java\com\android\server\wifi\WifiScoreReport.java

// Cache of the last score
private int mLegacyIntScore = ConnectedScore.WIFI_INITIAL_SCORE;//60private NetworkScore.Builder getScoreBuilder() {// We should force keep connected for a MBB CMM which is not lingering.boolean shouldForceKeepConnected =mCurrentRole == ActiveModeManager.ROLE_CLIENT_SECONDARY_TRANSIENT&& !mShouldReduceNetworkScore;int keepConnectedReason =shouldForceKeepConnected? NetworkScore.KEEP_CONNECTED_FOR_HANDOVER: NetworkScore.KEEP_CONNECTED_NONE;boolean exiting = SdkLevel.isAtLeastS() && mWifiConnectedNetworkScorerHolder != null? !mIsUsable : mLegacyIntScore < ConnectedScore.WIFI_TRANSITION_SCORE;return new NetworkScore.Builder().setLegacyInt(mShouldReduceNetworkScore ? LINGERING_SCORE : mLegacyIntScore).setTransportPrimary(mCurrentRole == ActiveModeManager.ROLE_CLIENT_PRIMARY).setExiting(exiting).setKeepConnectedReason(keepConnectedReason);}

packages\modules\Wifi\service\java\com\android\server\wifi\ConnectedScore.java

 /** Maximum NetworkAgent score that should be generated by wifi */public static final int WIFI_MAX_SCORE = 60;/** Initial Wifi score when starting up NetworkAgent. */public static final int WIFI_INITIAL_SCORE = WIFI_MAX_SCORE;

2、4G 默认分数 50

frameworks\opt\telephony\src\java\com\android\internal\telephony\data\TelephonyNetworkFactory.java


private static final int TELEPHONY_NETWORK_SCORE = 50;public TelephonyNetworkFactory(Looper looper, Phone phone, PhoneSwitcher phoneSwitcher) {super(looper, phone.getContext(), "TelephonyNetworkFactory[" + phone.getPhoneId()+ "]", null);mPhone = phone;mInternalHandler = new InternalHandler(looper);mSubscriptionController = SubscriptionController.getInstance();mAccessNetworksManager = mPhone.getAccessNetworksManager();setCapabilityFilter(makeNetworkFilter(mSubscriptionController, mPhone.getPhoneId()));setScoreFilter(TELEPHONY_NETWORK_SCORE);mPhoneSwitcher = phoneSwitcher;.......// apply or revoke requests if our active-ness changesprivate void onActivePhoneSwitch() {logl("onActivePhoneSwitch");if (mSubscriptionId == mSubscriptionController.getActiveDataSubscriptionId()) {logl("onActivePhoneSwitch: set primary flag for phoneId: " + mPhone.getPhoneId());setScoreFilter(new NetworkScore.Builder().setLegacyInt(TELEPHONY_NETWORK_SCORE).setTransportPrimary(true).build());} else {setScoreFilter(new NetworkScore.Builder().setLegacyInt(TELEPHONY_NETWORK_SCORE).setTransportPrimary(false).build());}

3、以太网 默认分数 Integer.MIN_VALUE

packages\modules\Connectivity\service-t\src\com\android\server\ethernet\EthernetNetworkFactory.java

 private static NetworkScore getBestNetworkScore() {return new NetworkScore.Builder().build();}private void setCapabilities(@NonNull final NetworkCapabilities capabilities) {mCapabilities = new NetworkCapabilities(capabilities);mLegacyType = getLegacyType(mCapabilities);if (mLinkUp) {// registering a new network offer will update the existing one, not install a// new one.mNetworkProvider.registerNetworkOffer(getBestNetworkScore(),new NetworkCapabilities(capabilities), cmd -> mHandler.post(cmd),mNetworkOfferCallback);}}

这篇关于android13(T) 网络比分机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/401843

相关文章

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont