扩展 MultiDexApplication 和 MultiDex.install(this) 有什么区别?
What's the difference between extending MultiDexApplication and MultiDex.install(this)?
从文档中,我了解到有两种方法可以在以下设备中支持 MultiDex API 21:
- 让应用程序 class 扩展
MultiDexApplication
,并且
- 在应用程序 class 的
onAttachBaseContext(Context base)
函数中使用 MultiDex.install(this)
以防应用程序扩展其他内容。
它们与默认在onAttachBaseContext()
中扩展MultiDexApplication
调用MultiDex.install(this)
基本相同,还是两种方法有区别?
它们是为您的应用启用 multidex 的两种方法,它们完全相同
如果你想为应用程序创建一个 class 只是为了启用 multidex,你可以将 MultiDexApplication 作为应用程序名称放在 AndroidManifest 中,不需要做更多,因为在 MultiDexApplication 中覆盖了 attachBaseContext() ,看:
public class MultiDexApplication extends Application {
public MultiDexApplication() {
}
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
如果您有应用程序 class 结束它只扩展应用程序您也可以将扩展更改为 MultiDexApplication 而不是 ovverride attachBaseContext() 方法,否则您有应用程序 class 它不扩展来自应用程序,因此您必须覆盖 attachBaseContext() 和您的自定义应用程序 class
正如您提到的,这是解决 "single" 问题的两个 "different" 方法
第一种方法(即扩展 MultiDexApplication)的问题在某些情况下可能无法实现。就像您想使用某个库中的其他基础 class 扩展您的应用程序一样。
由于 Java 不支持多重继承,Android 提供了另一种解决问题的方法,即 "MultiDex.install(this)"
在某些项目中,您可能无法执行 Application class extends MultiDexApplication(例如,如果您的 Application 已经扩展了其他 class)。在那种情况下,您可以在应用程序 class 中使用 MultiDex.install(this)。
从文档中,我了解到有两种方法可以在以下设备中支持 MultiDex API 21:
- 让应用程序 class 扩展
MultiDexApplication
,并且 - 在应用程序 class 的
onAttachBaseContext(Context base)
函数中使用MultiDex.install(this)
以防应用程序扩展其他内容。
它们与默认在onAttachBaseContext()
中扩展MultiDexApplication
调用MultiDex.install(this)
基本相同,还是两种方法有区别?
它们是为您的应用启用 multidex 的两种方法,它们完全相同
如果你想为应用程序创建一个 class 只是为了启用 multidex,你可以将 MultiDexApplication 作为应用程序名称放在 AndroidManifest 中,不需要做更多,因为在 MultiDexApplication 中覆盖了 attachBaseContext() ,看:
public class MultiDexApplication extends Application {
public MultiDexApplication() {
}
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
如果您有应用程序 class 结束它只扩展应用程序您也可以将扩展更改为 MultiDexApplication 而不是 ovverride attachBaseContext() 方法,否则您有应用程序 class 它不扩展来自应用程序,因此您必须覆盖 attachBaseContext() 和您的自定义应用程序 class
正如您提到的,这是解决 "single" 问题的两个 "different" 方法
第一种方法(即扩展 MultiDexApplication)的问题在某些情况下可能无法实现。就像您想使用某个库中的其他基础 class 扩展您的应用程序一样。 由于 Java 不支持多重继承,Android 提供了另一种解决问题的方法,即 "MultiDex.install(this)"
在某些项目中,您可能无法执行 Application class extends MultiDexApplication(例如,如果您的 Application 已经扩展了其他 class)。在那种情况下,您可以在应用程序 class 中使用 MultiDex.install(this)。