MyApplication扩展了应用程序。
MyApplication.java
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
的AndroidManifest.xml
<application android:name="com.my.app.MyApplication">
tergetSdkVersion是23
compileSdkVersion是26
使用multidex (multidex库是'com.android.support:multidex:1.0.1')
问题是有时候没有创建MyApplication。 (不总是) 看起来默认的Application实例是创建非MyApplication。
!!!在targetSdkVersion更新18 - &gt; 23之后会出现此问题。
答案 0 :(得分:0)
如果您使用MultiDex
public class MyApplication extends MultiDexApplication{
@Override
public void onCreate() {
super.onCreate();
}
}
如果你转到MultiDexApplication
,这是.class文件中的代码。
public class MultiDexApplication extends Application {
public MultiDexApplication() {
}
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
因此,如果要覆盖自定义实现的attachBaseContext
,则可以覆盖该方法,否则无需覆盖。因为上面我将MyApplication
类扩展为MultiDexApplication
类。
您必须在AndroidManifest.xml
<application
android:name=".MyApplication"
android:allowBackup="false"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
你已经完成了。
你的build.gradle(应用程序级别)看起来像
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 23
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
如需进一步参考,您可以访问documentation