反射在Android开发中的利害
由于Android2.2的推出,很多新的API参加招致很多项目移植需求思索运用Java的反射机制Reflection来动态调用,动态调用的益处就是不需求运用援用文件,直接经过JDK中声明好的办法直接调用,自身原理基于JVM的,从Java1.5开端支持,原理上就是依据类名而不实例化对象的状况下,取得对象的办法或属性而直接调用。
Android开发时反射能协助我们几?
1.有些网友可能发现Android的SDK比拟封锁,很多敏感的办法常规的用户无法编译,我们假如翻看了代码直接在反射中声明动态调用即可。比方很多internal或I开头的AIDL接口均能够经过反射轻松调用。
2.反射关于Android123来说更重要的是思索到应用的兼容性,我们目前主要兼容从Android1.5到2.2的项目,APILevel从3到8能够便当的扩大,调用前我们预留一个标志位声明该API的最低以及最高的APILevel为几能够调用。
3.关于调试Java的反射是功臣了,在Logcat中我们能够看到出错的中央肯定有相似java.lang.reflect.XXX的字样,这种自检机制能够协助我们便当的调试Android应用程序。
反射的缺陷有哪些:
(1).由于是动态执行的,效率自然没有预编译时援用现有的库效率高,就像平常我们Win32开发时,能够不用h文件,直接经过GetProcAddress一样去动态获取办法的地址。当然效率要依据复杂水平而决议,普通略微复杂的处置性能损失可能超越20%,关于一些复杂的触及Java自动类型转换判别,执行时间可能是直接援用的上千倍,所以最终我们调试时必需考虑性能问题。
(2).由于反射是动态的,所以需求处置很多异常,不然Dalvik解体出ForceClose的概率会大很多,很简单的一个反射就需求至少3个异常捕获,自身try-catch效率就不是很高,自然进一步影响运转效率,关于Android开发我们必需思索这些问题。
(3).反射由于招致代码臃肿,自然略微复杂的几个办法适用反射将会招致代码可读性和维护性降低,假如很笼统的调用Android开发网激烈不引荐这种办法。最后要说的是Reflection并不是Java的专利,微软的.Net也同样支持,同时更多的动态言语如Ruby等均支持这一特性。
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com