android的call与Phone的实现分析
来源:互联网 发布:以公司名义开淘宝店 编辑:程序博客网 时间:2024/06/01 10:26
android中,电话的两个核心类就是call.java与Phone.java了,这两个类,call是abstract class,Phone是interface。google这样设计自然有其理由的,下面我结合自己的理解来简要的分析下,为什么call用抽象类,Phone用接口来实现。
android在中间层的telephony有两套机制,一套是GSM,一套是CDMA。自然基本上所有的实现都有两条路径了。选择哪种实现,是RIL读取的网络制式决定的,当然你也可以在framework自己指定。这两套机制,各有自己的call与Phone。它们决定了call与Phone的不同实现方式。
OK,我们先来了解下抽象类与接口的区别。一句话,抽象类是模板,接口是规范。
模板是什么,模板就像我们经常填写的请假单,试卷,报名表。。。它们把不变的东西取出来,因为那些每个人都是一样的,然后你可以自己复写你自己需要改变的东西,这样它就成了你自己的了。call类也是如此,GSMCall与CDMACall的实现大部分是一致的,这样的话,定义一个模板类然后继承它实现两个子类,这样子类要复写的代码就很少了。当然,这不是需要用继承的唯一理由,因为这用接口也可以实现的,虽然需要写的代码更多了些。我们用继承,需要考虑的最重要的一点是,我们需不需要向上转型。call类明显是需要的,因为我们在上层根本没有用到GSMCall与CDMACall,我们用到的都是call,上层是不需要管中间层的实现的,这样其实就是一个向上转型的过程了。因此,call用抽象类比接口好。
下面我们来了解下Phone为什么用接口来实现。
接口是什么?接口是规范,什么意思,接口就是规则,就相当于60分及格一样,你60分以上,你就及格了。那么60分及格就是一套规则。只要任何人实现了这个规则,那么他就及格了。其实Phone就是一个规则,因为我们使用的GSMPhone与CDMAPhone,它们的本质都是handler,但是它们都实现了Phone接口,也就是说,它们都具有Phone的特性。由于它们继承自handler,也就是说,它们不能再继承与抽象类Phone了,而且,由于Phone有代理类,它们也不需要向上转型。这样,接口相对于抽象类的更灵活的优势,选择接口肯定是比抽象类好的。
以上,是我对着两个类的简单实现分析,个人愚见,欢迎拍砖- android的call与Phone的实现分析
- phone/call/connection 的关系
- 6572 Phone call分析
- android中 phone类的分析
- GDB调试器源代码分析系列--Inferior call的实现与分析(1)
- phone模块的分析
- android Phone 距离感应器锁的实现
- android Phone 距离感应器锁的实现
- Windows Phone与Android风格的对比
- System call 的分析
- [FAQ12564]【Phone Call】双拨号键对应SIM卡拨打电话的实现
- Android调用打电话(Call Phone)
- Android Phone 类的详细 分析 各个类的功能
- Android Phone 类的详细 分析 各个类的功能
- Android 漂浮类动效的分析与实现!
- Android 漂浮类动效的分析与实现!
- Android 漂浮类动效的分析与实现
- Android轮播的实现与分析
- self :: 和 this-> 的区别
- Bash Commands - tr cat tac
- 关于手机分辨率相关术语和概念
- Oracle内建包UTL_FILE,UTL_HTTP,UTL_SMTP,UTL_TCP使用说明
- NSLog的使用方法
- android的call与Phone的实现分析
- Objective C--建造者模式
- make menuconfig 时,出现错误:unable to find the ncurses libraries
- Java多线程编程--(7)学习Java5.0 并发编程包--Lock & Condition
- win8应用开发之一:创建一个使用 C#/VB 和 XAML 的 Metro 风格应用
- 【科普】中华民族复兴任务算法...不是网传的10月1到10月1
- Andriod JNI编程之C++回调Java函数
- ICON下载,Win8,Metro风格
- 一步一步学习Spring(3)-管理Bean之间的关系二(自动依赖检查)