当前位置: 首页 > news >正文

Android 网络请求的选择逻辑(Connectivity Modules)

代码分析

ConnectivityManager

packages/modules/Connectivity/framework/src/android/net/ConnectivityManager.java

许多APN已经弃用,应用层统一用 requestNetwork() 来请求网络。

 [ConnectivityManager]
 [ConnectivityManager] example

 [ConnectivityManager] requestNetwork()
 [ConnectivityManager] requestNetwork()

sendRequestForNetwork
 [ConnectivityManager] sendRequestForNetwork

sendRequestForNetwork

此接口是针对“任何类型网络请求”都会执行的公共逻辑,包括 WiFi、Cellular(蜂窝数据)、以太网、有线、蓝牙等。

只负责请求的注册、回调的挂钩、AIDL通信与系统服务托管,并不区分底层是wifi还是cellular真正的“分配哪个网络(WiFi还是Cellular)”的事,是在系统服务 ConnectivityService(以及更下游的 NetworkAgent、NetworkFactory)里完成判断和分配的。

NetworkCapabilities need 这个参数规定了请求的网络属性和能力,由 ConnectivityService(system service) 进行分配:

  • 指定 TRANSPORT_WIFI(只想要WiFi网络,NetworkCapabilities.TRANSPORT_WIFI)
  • 指定 TRANSPORT_CELLULAR(只想用数据蜂窝,NetworkCapabilities.NET_CAPABILITY_INTERNET)
  • 可以“都不指定”或者指定多个,系统帮自动选择或监听。
  • Android 自 9.0(API 28)起,ConnectivityService/NetworkStack 支持“IP over Bluetooth”(PAN,也叫 Bluetooth tethering 蓝牙网络共享)的情况,可以作为一种网络传输方式存在
    • 在 NetworkCapabilities 的定义中,TRANSPORT_BLUETOOTH 已经是一个合法的 Transport 类型。即——如果有蓝牙 PAN 设备连接,Android 会将其当做一种“有能力提供 IP 网络通信”的链路。
    private NetworkRequest sendRequestForNetwork(int asUid, NetworkCapabilities need,NetworkCallback callback, int timeoutMs, NetworkRequest.Type reqType, int legacyType,CallbackHandler handler) {printStackTrace();checkCallbackNotNull(callback);//非默认跟踪请求,如果没指定网络能力(need)就是非法调用。if (reqType !=

相关文章:

  • 深入解析 MySQL 并发控制:读写锁、锁粒度与高级优化
  • 数据库(考前两天版本)
  • 李沐动手深度学习(pycharm中运行笔记)——11.模型选择+过拟合欠拟合
  • SQL关键字三分钟入门:UNION 与 UNION ALL —— 数据合并全攻略
  • RKNN开发环境搭建3-RKNN Model Zoo 板载部署以Whisper为例
  • pyqt 简单条码系统
  • OpenStack入门
  • 搭建简易采购系统:从需求分析到供应商数据库设计
  • 【第二章:机器学习与神经网络概述】01.聚类算法理论与实践-(2)层次聚类算法(Hierarchical Clustering)
  • 【对比】DeepAR 和 N-Beats
  • 【unitrix】 3.0 基本结构体(types.rs)
  • python 解码 jwt
  • javaweb -Ajax
  • LVS—DR模式
  • 最新FVCOM 潮流、波浪、泥沙、水质、温盐、染色剂、粒子示踪、嵌套、背景流、自动化全流程
  • 在线教育平台敏捷开发项目
  • CppCon 2017 学习:C++ in Academia
  • ModbusTcp使用
  • Qt事件处理机制
  • Transformer推理拓扑关系
  • 有哪些做企业点评的网站/百度一下你就知道了百度一下
  • 图书馆网站制作/seo原创工具
  • 好的网站具备条件/客源引流推广
  • 电商怎么做营销推广w/什么叫优化
  • 怎么样让百度收录网站/苏州关键词seo排名
  • 做菠菜网站好赚吗/怎么开自己的网站