Регистрация динамической активности
-
12-12-2019 - |
Вопрос
У меня есть этот вопрос, касающийся действий Android и AndroidManifest.xml.Вопрос возник, когда я работал с Java-сервлетами и хотел создать "основанный на модулях" или что-то похожее на сервер на основе плагинов.Это работает нормально, и я могу динамически загружать нужные мне сервлеты, используя подход к коду, аналогичный этому: Динамически добавляйте сервлет в ServletConfig.Сервлеты динамически обнаруживаются и сопоставляются во время запуска сервера.
Вопрос здесь не в том, как найти нужные действия, или как создать их новый экземпляр, или как их запустить, с этой частью я разобрался.Я могу перебирать свои пакеты и находить соответствующие классы Activity, создавать их новые экземпляры и добавлять их в список.
Я использую interface
который должны выполнять все действия, чтобы быть действительным.Таким образом, я могу создавать новые части, расширения или новые функции для своего приложения, и все просто работает.В моем приложении у меня есть список кнопок, на которые пользователи могут нажимать, и список кнопок генерируется путем добавления их в мое представление с помощью ListView
.
private void displayLoadedContent() {
View v = inflateLayout(R.layout.buttonlayout);
ListView view = (ListView) v.findViewById(R.id.list);
view.setAdapter(new ListButtonAdapter(this, content));
}
где content
объявляется как
List<MyActivityInterface> content;
и ListButtonAdapter
расширяться BaseAdapter
.
Так что никаких проблем нет.Проблема в том, что я должен объявлять каждое из моих действий в AndroidManifest.xml.Этот файл похож на большой список возможных действий для отображения, и довольно беспорядочный, поэтому я не собираюсь отображать код здесь.
Я понимаю, что мне придется добавить одно действие в манифест, но я надеялся, что одного действия должно быть достаточно.Мой подход во многих отношениях можно рассматривать как Схема переднего контроллера, где каждое из действий отвечает за загрузку и отображение необходимой им активности.
Я просто спрашиваю, возможно ли вообще динамически регистрировать действия в манифесте (или разрешать им запускаться другим способом), и если нет, то есть ли какое-либо другое действительное решение?
Решение
Android требует, чтобы каждое действие было зарегистрировано в вашем AndroidManifest.xml
подайте заявку заранее.При развертывании ваше приложение будет храниться на устройстве в виде файла .apk, который нельзя изменить (кроме обновления / замены новым APK).
Если я правильно понимаю вопрос, вы просто не хотите перечислять большое количество действий в вашем файле манифеста? Фрагменты не нужно регистрировать в файле манифеста, поэтому, если ваша цель состоит в динамической замене компонентов пользовательского интерфейса, это было бы ответом.Фрагменты доступны обратно в версию 1.6 через Библиотека поддержки.