设为首页 加入收藏

TOP

Android的反射机制Reflection
2014-11-24 07:54:03 来源: 作者: 【 】 浏览:1
Tags:Android 反射 机制 Reflection

Android开发时反射能帮助我们多少


1. 有些网友可能发现Android的SDK比较封闭,很多敏感的方法常规的用户无法编译,我们如果翻看了代码直接在反射中声明动态调用即可。比如很多internal或I开头的AIDL接口均可以通过反射轻松调用。


2. 反射对于Android来说更重要的是考虑到应用的兼容性,我们目前主要兼容从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等均支持这一特性。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇利用Java反射解决Android系统方法.. 下一篇Eclipse + CDT + GDB 进行Arm Lin..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)