Most visited

Recently visited

Added in API level 14

BaseDexClassLoader

public class BaseDexClassLoader
extends ClassLoader

java.lang.Object
   ↳ java.lang.ClassLoader
     ↳ dalvik.system.BaseDexClassLoader
Known Direct Subclasses


不同基于dex的 ClassLoader实现之间的通用功能的基类。

Summary

Public constructors

BaseDexClassLoader(String dexPath, File optimizedDirectory, String librarySearchPath, ClassLoader parent)

构造一个实例。

Public methods

String findLibrary(String name)

返回本机库的绝对路径名称。

String toString()

返回对象的字符串表示形式。

Protected methods

Class<?> findClass(String name)

使用指定的 binary name查找类。

URL findResource(String name)

查找具有给定名称的资源。

Enumeration<URL> findResources(String name)

返回表示具有给定名称的所有资源的 URL对象的枚举。

软件包 getPackage(String name)

返回给定包的包信息。

Inherited methods

From class java.lang.ClassLoader
From class java.lang.Object

Public constructors

BaseDexClassLoader

Added in API level 14
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

Added in API level 1
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

Added in API level 1
String toString ()

返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”此对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Protected methods

findClass

Added in API level 1
Class<?> findClass (String name)

用指定的binary name查找类。 该方法应该由类加载器实现覆盖,该实现遵循加载类的委托模型,并且在检查所请求的类的父类加载器后, loadClass方法调用。 默认实现抛出ClassNotFoundException

Parameters
name String: The binary name of the class
Returns
Class<?> The resulting Class object
Throws
ClassNotFoundException

findResource

Added in API level 1
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

Added in API level 1
Enumeration<URL> findResources (String name)

返回表示具有给定名称的所有资源的URL对象的枚举。 类加载器实现应该重写此方法以指定从哪里加载资源。

Parameters
name String: The resource name
Returns
Enumeration<URL> An enumeration of URL objects for the resources

getPackage

Added in API level 1
软件包 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

Hooray!