从文档中,我读到有两种方法可以在API 21以下的设备中支持MultiDex:
MultiDexApplication
,并且MultiDex.install(this)
函数中使用onAttachBaseContext(Context base)
。默认情况下,它们与在MultiDexApplication
中扩展MultiDex.install(this)
调用onAttachBaseContext()
基本上是相同的,还是两种方法之间有区别?
答案 0 :(得分:2)
有两种方法可以为您的应用启用multidex,它们是完全相同的
如果您只想为启用Multidex的应用程序创建类,则可以将MultiDexApplication作为应用程序名称放在AndroidManifest中,而无需做更多事情,因为在MultiDexApplication中覆盖了attachBaseContext(),请看:
public class MultiDexApplication extends Application {
public MultiDexApplication() {
}
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
并且如果您的应用程序类结尾仅是Application扩展,那么您也可以将扩展名更改为MultiDexApplication而不是ovverride attachBaseContext()方法,否则您的应用程序类不是从Application扩展的,因此您必须覆盖attachBaseContext( )和您的自定义应用程序类
答案 1 :(得分:0)
就像您提到的那样,这是解决“单个”问题的两种“不同”方法
在某些情况下,第一种方法(即扩展MultiDexApplication)的问题可能不会发生。就像您想用某个库中的其他基类扩展您的应用程序。 由于Java不支持多重继承,因此Android提供了另一种解决此问题的方法,即“ MultiDex.install(this)”
答案 2 :(得分:0)
在某些项目中,您可能无法执行Application类扩展MultiDexApplication(例如,如果您的Application已经扩展了其他类)。在这种情况下,您可以在Application类中使用MultiDex.install(this)。