В чем разница между расширением MultiDexApplication и MultiDex.install (это)?

1

Из документации я прочитал, что есть два способа поддержки MultiDex на устройствах ниже API 21:

  1. Наличие класса Application расширяет MultiDexApplication, и
  2. Использование MultiDex.install(this) в функции класса приложения onAttachBaseContext(Context base) в случае, если приложение расширяет что-то еще.

Они в основном одинаковы с расширением MultiDexApplication вызывая MultiDex.install(this) в onAttachBaseContext() по умолчанию, или есть различия между обоими методами?

Теги:
multidex

3 ответа

2
Лучший ответ

это два способа включить мультидекс для вашего приложения, и они абсолютно одинаковы

если вы хотите создать класс для приложения только для включения multidex, вы можете просто поместить MultiDexApplication для имени приложения в AndroidManifest и не нужно делать больше, потому что в MultiDexApplication переопределяется метод attachBaseContext(), посмотрите:

public class MultiDexApplication extends Application {
    public MultiDexApplication() {
    }

    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

и если у вас есть конец класса приложения, он расширяет только приложение, вы также можете изменить расширяет на MultiDexApplication вместо метода ovverride attachBaseContext(), в противном случае у вас есть класс приложения, который не расширяется из Application, поэтому вы должны переопределить метод attachBaseContext() и ваш пользовательский класс приложения

0

Как вы упомянули, это два "разных" подхода для решения "одной" проблемы

Проблема с первым подходом (то есть расширением MultiDexApplication) может быть невозможна в некоторых случаях. как вы хотите расширить свое приложение с другим базовым классом из некоторой библиотеки. Поскольку множественное наследование не поддерживается в Java, Android предоставила другой способ решения проблемы, а именно "MultiDex.install(this)"

0

В некоторых проектах у вас может не быть возможности сделать класс приложения расширяет MultiDexApplication (например, если ваше приложение уже расширяет какой-то другой класс). В этом случае вы можете использовать MultiDex.install(this) в вашем классе Application.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню