由于Android 2.2的推出,很多新的API加入导致很多项目移植需要考虑使用Java的反射机制Reflection来动态调用,动态调用的好处就是不需要使用引用文件,直接通过JDK中声明好的方法直接调用,本身原理基于JVM的,从Java 1.5开始支持,原理上就是根据类名而不实例化对象的情况下,获得对象的方法或属性而直接调用。 Android开发时反射能帮助我们多少? 1. 有些网友可能发现Android的SDK比较封闭,很多敏感的方法常规的用户无法编译,我们如果翻看了代码直接在反射中声明动态调用即可。比如很多 internal或I开头的AIDL接口均可以通过反射轻松调用。 2. 反射对于Android123来说更重要的是考虑到应用的兼容性,我们目前主要兼容从Android 1.5到2.2的项目,API Level从3到8可以方便的扩充,调用前我们预留一个标志位声明该API的最低以及最高的API Level为多少可以调用。 3. 对于调试Java的反射是功臣了,在Logcat中我们可以看到出错的地方肯定有类似java.lang.reflect.XXX的字样,这种自检机制可以帮助我们方便的调试Android应用程序。 反射的缺点有哪些? 1. 因为是动态执行的,效率自然没有预编译时引用现有的库效率高,就像平时我们Win32开发时,可以不用h文件,直接通过GetProcAddress一样去动态获取方法的地址。当然效率要根据复杂程度而决定,一般稍微复杂的处理性能损失可能超过20%,对于一些复杂的涉及Java自动类型转换判断,执行时间可能是直接引用的上千倍,所以最终我们调试时必须考虑性能问题。 2. 因为反射是动态的,所以需要处理很多异常,不然Dalvik崩溃出Force Close的概率会大很多,很简单的一个反射就需要至少3个异常捕获,本身try-catch效率就不是很高,自然进一步影响运行效率,对于 Android开发我们必须考虑这些问题。 3. 反射因为导致代码臃肿,自然稍微复杂的几个方法实用反射将会导致代码可读性和维护性降低,如果很抽象的调用Android开发网强烈不推荐这种方法。 最后要说的是Reflection并不是Java的专利,微软的.Net也同样支持,同时更多的动态语言如Ruby等均支持这一特性。
分享到:
相关推荐
Android的SoundPool类使用与利弊
安卓android详解(包括ROOT利弊)(手机所有设置).pdf
单例模式和其他设计模式一样,不是Android以及java所特有的设计模式,但估计是Android开发中使用最多的设计模式,且不说它全局只存在一个实例的特性可以减少不必要的对象创建这一点,单是它设计简单且是静态化调用等...
高中英语作文利弊型PPT学习教案.pptx
关于GraphQL及使用利弊
使用手机利弊辩论赛班会材料.doc
浅谈中小企业筹资方式的利弊
浅析互联网 大学英语词汇APP使用的利弊.pdf
旅游开发对传统文化传承的利弊.doc
在校大学生使用互联网的利弊及对策.docx在校大学生使用互联网的利弊及对策.docx在校大学生使用互联网的利弊及对策.docx在校大学生使用互联网的利弊及对策.docx在校大学生使用互联网的利弊及对策.docx在校大学生使用...
在校大学生使用互联网的利弊及对策.pdf在校大学生使用互联网的利弊及对策.pdf在校大学生使用互联网的利弊及对策.pdf在校大学生使用互联网的利弊及对策.pdf在校大学生使用互联网的利弊及对策.pdf在校大学生使用互联网...
多媒体在高中政治教学中应用的利弊分析.docx
商务英语教学中计算机网络利弊探讨.doc
利弊均衡表new.doc
电子游戏利弊辩论.pdf
互联网的利弊.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
使用手机利弊辩论赛班会材料 辩题 .pdf,这是一份不错的文件
使用手机利弊辩论赛班会材料资料辩题.pdf,这是一份不错的文件
在单片机中嵌入UCOS的利弊