Android手机上网实现机制

本章介绍DataConnectionTracker对DataConnection手机上网数据连接的管理机制和流程。

一、Android网络整体结构

        流程结构图如下:

这里写图片描述![](https://img-blog.csdn.net/20170329135459879?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFueXIxMjA4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

        Android网络中,在底层实现了两个虚拟串口:

  • Command命令通道:建立或断开网络连接
  • Data数据通道:基于TCP/IP网络通信协议的数据传输

 [可分析下基于TCP/IP网络通信协议的数据传输实现机制]

二、DataConnection

        该类管理手机上网连接,一个DataConnection代表手机上网的一个数据连接,Android源代码中最大支持9种数据连接类型,但是数据连接在同一时刻仅有一个是有效的。DataConnection是继承于StateMachine类的抽象类,共有6个XXXState内部类:

  • DcDefaultState // 默认状态定义
  • DcInactiviteState // 不活动的状态定义
  • DcActivitingState // 正在激活的状态定义
  • DcActiveState // 活动中的状态定义
  • DcDisconnectingState // 正在断开的状态定义
  • DcDisconnectionErrorCreatingConnection // 断开失败并且正在创建的状态定义

       这些内部类均为State的子类,均都有enger、exit和processMessage三个非常重要的方法,这样在切换的过程或是不同的状态情况下,由这三个方法采用不同逻辑进行处理,减少了对状态的繁琐判断,这正是使用State设计模式[将对象的状态封装成一个对象,在不同的状态下,同样的调用执行不同的操作]的优势所在:

    private class XXXState extends State {
        @Override
        public void enter() { // 在状态转换时,进入此状态的操作
            ......
        }

        @Override
        public void exit() { // 在状态转换时,退出此状态的操作
            ......
        }

        @Override
        public boolean processMessage(Message msg) {
            switch (msg.what) { // 根据Handler消息类型进入不同的分支进行处理
                ......
            }
            ......
        }
    }

        虽然有6个数据连接状态的内部类,但是只有5个数据连接的状态转换,原因是:在数据连接转换的过程中,DcDefaultState状态对象仅限于其他5个对象之间的转换,详情如下:

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值