【文件属性】:
文件名称:Android中动态载入自定义类
文件大小:125KB
文件格式:ZIP
更新时间:2015-06-01 02:51:30
Android 自定义类
普通的Android程序Dalvik虚拟机都是从一个默认的地方载入程序需要的类文件(dex文件),而Dalvik虚拟机还提供了从其他地方载入类的能力(比如从设备的内部存储空间以及互联网).
这种自定义类加载机制可以使用于一些场景:
dex文件只能包含最多64K的函数引用,对于大型的程序如果超过了该数字,就可以通过把程序打包为多个dex文件来实现,在程序运行的时候在加载这些需要的类
一些开发框架可以通过运行时自定义类加载机制来设计出更加可扩展的框架
通过该方式实现更加强壮的程序注册机制,防止被人破解
载入自定义类的过程
获取需要载入的自定义类的dex文件,可以是设备本地的文件或者互联网上的文件
把获取到的自定义类dex文件保存到程序的内部储存空间中:new File(getDir(“dex”, Context.MODE_PRIVATE),SECONDARY_DEX_NAME);
通过DexClassLoader类加载器来解析优化前面的dex文件
通过DexClassLoader的loadClass函数来载入类
通过获得到的类的newInstance函数来生成需要的对象
开始使用获取到的动态类对象~\(≧▽≦)/~啦啦啦
【文件预览】:
android-custom-class-loading-goodev-demo
----AndroidManifest.xml(1KB)
----res()
--------layout()
--------drawable-ldpi()
--------drawable-mdpi()
--------drawable-hdpi()
--------values()
--------.svn()
----src()
--------com()
--------.svn()
----bin()
--------com()
--------android-custom-class-loading-goodev-demo.apk(17KB)
--------classes.dex(8KB)
--------resources.ap_(11KB)
----.classpath(280B)
----assets()
--------.svn()
----default.properties(362B)
----libs()
--------.svn()
----.project(876B)
----build.xml(7KB)
----Readme.txt(2KB)
----gen()
--------com()
----local.properties(423B)
----.svn()
--------all-wcprops(1018B)
--------props()
--------dir-prop-base(33B)
--------prop-base()
--------tmp()
--------text-base()
--------entries(1KB)
网友评论
- 不错,用起来可以。
- 不错,用起来可以。
- 不错,这个可以用,很好
- 是挺好的,谢谢楼主