【发布时间】:2010-05-09 21:23:33
【问题描述】:
我阅读了一些关于类加载器的文档,但我仍然不确定在哪里以及为什么需要它们。 Android API 说:
从 存储库。一个或多个类加载器 在运行时安装。这些都是 每当运行时系统咨询 需要一个尚未完成的特定课程 内存中可用。
所以如果我理解正确的话,可能会有很多类加载器负责加载新类。但是系统如何决定使用哪个?在什么情况下开发者应该实例化一个新的类加载器?
在 Android API for Intent 中有一个方法
public void setExtrasClassLoader (ClassLoader loader)
描述说:
设置将使用的 ClassLoader 解组任何 Parcelable 时 来自此 Intent 的附加值。
那么我可以在那里定义一个特殊的类加载器,以便我可以传递带有未在接收活动中定义的 Intent 的对象吗?一个例子:
如果位于项目 A(在 Eclipse 中)中的活动 A 定义了一个我想使用 Intent 对象的 putExtra 发送到项目 B 中的活动 B 的对象。如果未定义通过 Intent 发送的此对象(项目 B 中的源代码),则会出现 NoClassDefFoundException。那么我可以使用 setExtraClassloader 方法来避免这个异常吗?如果是,我如何决定我必须通过哪个类加载器对象?以及如何正确实例化它?
【问题讨论】:
标签: java android classloader