Фон
Я пытаюсь сохранить приложение настолько модульным, насколько это возможно.
Приложение будет иметь задачи, которые оно будет выполнять с разными интервалами.Моя цель - сделать так, чтобы было проще добавлять новые задачи с минимальным пониманием базовой архитектуры и без необходимости изменения других файлов, но в то же время без чрезмерного усложнения кода.
Было бы идеально, если бы всевам нужно сделать, чтобы добавить новую задачу, это создать файл и все.
Это потребует загрузки задач во время выполнения, что мне не очень нравится, я мог бы жить в одном месте, где вся регистрация сделана(это также позволило переключать задачи)
Сейчас у меня есть абстрактный класс задач, в котором есть фрагмент статического кода, который регистрирует все задачи (в основном добавляет их в список).
Проблема
Каждая задача будет иметь собственный набор предпочтений и, возможно, ресурсы.
Разделить строки и массив довольно просто, используя префиксы для имен, но основная проблема связана с настройками.
Сейчас я использую PreferenceActivity
для отображения своих предпочтений.
Общие настройкидобавлено из файла XML.Настройки каждой задачи находятся в отдельном PreferenceScreen
.У всех задач есть только одна общая черта, и это флажок «Включено».
Я не хочу хранить все настройки в одном файле, так как в этом случае есть возможность запутаться.
Текущее решение
Прямо сейчас у каждой задачи есть метод setupPreferences(PreferenceScreen)
, в котором они могут добавлять любые опции, которые они хотят.Это, однако, имеет недостаток в программном обеспечении, что не так уж и плохо, но я бы хотел избежать этого, если это возможно.
Желаемое решение
Оптимальное решение было бы, если бы каждая задачасобственный XML-файл, который загружается и добавляется в корень PreferenceScreen
, насколько я знаю, однако это невозможно, единственный способ загрузить его в PreferenceActivity
.
Другие примечания
Если у кого-то есть другие предложения по разделению ресурсов в Android, не стесняйтесь делиться ими:)
Спасибо
Никлас
Уточнение
ЗадачиЯ говорю о том, что никогда не будет третьей стороной, они будут только внутренними.Это скорее способ получить хорошую структуру этого приложения.