BaseDexClassLoader
public class BaseDexClassLoader
extends ClassLoader
Known Direct Subclasses
|
不同基于dex的 ClassLoader
实现之间的通用功能的基类。
Summary
Inherited methods |
From class java.lang.ClassLoader
void |
clearAssertionStatus() 将此类加载器的默认断言状态设置为 false,并放弃与类加载器关联的所有程序包缺省值或类断言状态设置。 |
final Class<?> |
defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) 使用可选的 ProtectionDomain将字节数组转换为类 Class的实例。 |
final Class<?> |
defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) 一个转换 ByteBuffer 为 Class类的实例,带有可选 ProtectionDomain。 |
final Class<?> |
defineClass(byte[] b, int off, int len) 此方法在API级别1中已被弃用。替换为defineClass(String, byte[], int, int) |
final Class<?> |
defineClass(String name, byte[] b, int off, int len) 将字节数组转换为类 Class的实例。 |
软件包 |
definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) 在此 ClassLoader中按名称定义一个包。 |
Class<?> |
findClass(String name) 找到具有指定 binary name的类。 |
String |
findLibrary(String libname) 返回本机库的绝对路径名称。 |
final Class<?> |
findLoadedClass(String name) 返回给定类 binary name如果装载机已记录由Java虚拟机作为与一类的初始化加载器 binary name 。 |
URL |
findResource(String name) 查找具有给定名称的资源。 |
Enumeration<URL> |
findResources(String name) 返回表示具有给定名称的所有资源的 URL 对象的枚举。 |
final Class<?> |
findSystemClass(String name) 找到具有指定的 binary name的课程 ,并在必要时加载它。 |
软件包 |
getPackage(String name) 返回已由此类加载器或其任何祖先定义的 软件包 。 |
Package[] |
getPackages() 返回由此类加载器及其祖先定义的所有 Packages 。 |
final ClassLoader |
getParent() 返回委托的父类加载器。 |
URL |
getResource(String name) 查找具有给定名称的资源。 |
InputStream |
getResourceAsStream(String name) 返回读取指定资源的输入流。 |
Enumeration<URL> |
getResources(String name) 查找具有给定名称的所有资源。 |
static ClassLoader |
getSystemClassLoader() 返回委托的系统类加载器。 |
static URL |
getSystemResource(String name) 从用于加载类的搜索路径中查找指定名称的资源。 |
static InputStream |
getSystemResourceAsStream(String name) 打开阅读,从用于加载类的搜索路径中指定名称的资源。 |
static Enumeration<URL> |
getSystemResources(String name) 从用于加载类的搜索路径中查找指定名称的所有资源。 |
Class<?> |
loadClass(String name, boolean resolve) 使用指定的 binary name加载课程。 |
Class<?> |
loadClass(String name) 使用指定的 binary name加载课程。 |
static boolean |
registerAsParallelCapable() 将调用者注册为并行能力。 |
final void |
resolveClass(Class<?> c) 链接指定的类。 |
void |
setClassAssertionStatus(String className, boolean enabled) 在此类加载器及其中包含的任何嵌套类中,为指定的顶级类设置所需的断言状态。 |
void |
setDefaultAssertionStatus(boolean enabled) 设置此类加载器的默认断言状态。 |
void |
setPackageAssertionStatus(String packageName, boolean enabled) 设置命名包的包默认断言状态。 |
final void |
setSigners(Class<?> c, Object[] signers) 设置类的签名者。 |
|
From class java.lang.Object
|
Public constructors
BaseDexClassLoader
BaseDexClassLoader (String dexPath,
File optimizedDirectory,
String librarySearchPath,
ClassLoader parent)
构造一个实例。
Parameters |
dexPath |
String : the list of jar/apk files containing classes and resources, delimited by File.pathSeparator , which defaults to ":" on Android |
optimizedDirectory |
File : directory where optimized dex files should be written; may be null |
librarySearchPath |
String : the list of directories containing native libraries, delimited by File.pathSeparator ; may be null |
parent |
ClassLoader : the parent class loader |
Public methods
findLibrary
String findLibrary (String name)
返回本机库的绝对路径名称。 VM调用此方法来查找属于使用此类加载器加载的类的本机库。 如果此方法返回null ,则VM将按照指定为“ java.library.path ”属性的路径搜索库。
Parameters |
name |
String : The library name |
Returns |
String |
The absolute path of the native library |
toString
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”此对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns |
String |
a string representation of the object. |
Protected methods
findClass
Class<?> findClass (String name)
用指定的binary name查找类。 该方法应该由类加载器实现覆盖,该实现遵循加载类的委托模型,并且在检查所请求的类的父类加载器后, loadClass
方法调用。 默认实现抛出ClassNotFoundException 。
Returns |
Class<?> |
The resulting Class object |
findResource
URL findResource (String name)
查找具有给定名称的资源。 类加载器实现应该重写此方法以指定在哪里查找资源。
Parameters |
name |
String : The resource name |
Returns |
URL |
A URL object for reading the resource, or null if the resource could not be found |
findResources
Enumeration<URL> findResources (String name)
返回表示具有给定名称的所有资源的URL
对象的枚举。 类加载器实现应该重写此方法以指定从哪里加载资源。
Parameters |
name |
String : The resource name |
getPackage
软件包 getPackage (String name)
返回给定包的包信息。 不幸的是,这个类的实例并没有真正的这个信息,并且作为一个不安全的ClassLoader
,根据规范,它甚至不需要。 然而,我们想要提供它,以使所有有希望的来电者myClass.getPackage().getName()
快乐。 因此,我们在第一次请求时构造一个软件包
对象,并用虚拟值填充大部分字段。 然后将软件包
对象放入ClassLoader
的包缓存中,以便下次看到相同的对象。 我们不为null
参数或默认包创建软件包
对象。
我们有很少机会得到代表相同包的多个软件包
对象:当包被分散在不同的JAR文件中时,会发生这种情况,这些JAR文件由不同的ClassLoader
实例加载。 这是不太可能的,并且考虑到这整个事情或多或少是一种解决方法,可能不值得努力解决。
Parameters |
name |
String : the name of the class |
Returns |
软件包 |
the package information for the class, or null if there is no package information available for it |