Расширение приложения из библиотечного проекта
Я знаю, как расширить класс 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?
Было бы лучше создать одноэлементный класс инициализатора, который принимает контекст приложения в качестве параметра. Тогда у вас все еще есть доступ к контексту, и вы можете зарегистрировать все, что захотите. И тогда пользователь не ограничивается расширением вашего класса приложений.