Расширение приложения из библиотечного проекта

Я знаю, как расширить класс Application из моего основного проекта, но в настоящее время я расширяю также и из библиотечного проекта (чтобы отсоединить код), поэтому я выполняю следующим образом:

1- public class MyMainApplication extends LibraryApp {...

2- public class LibraryApp extends Application {...

И мой манифест:

<application
    android:name="com.something.MyMainApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyMainAppTheme">

На самом деле все работает хорошо, но я хочу знать, может ли это кодирование нарушить что-то в архитектуре Android или что-то еще.

1 ответ

Решение

Это будет хорошо работать, если вы уверены, что вызываете super.xx() во всех методах, которые вы переопределяете в своем классе LibraryApp.

Хотя использование класса Application в основном ограничивает ваших пользователей. Многие библиотеки используют свой собственный класс Application (как и вы), и, поскольку может быть только 1 класс Application, и вы можете расширить только 1 класс в Java, что ограничивает пользователя до 1 библиотеки, которая использует класс Application.

Вам действительно нужно расширить класс Application?
Было бы лучше создать одноэлементный класс инициализатора, который принимает контекст приложения в качестве параметра. Тогда у вас все еще есть доступ к контексту, и вы можете зарегистрировать все, что захотите. И тогда пользователь не ограничивается расширением вашего класса приложений.

Другие вопросы по тегам