2012-06-02 4 views
7

Я не Android-разработчик, хотя разработал приложение, состоящее из более чем 50 мероприятий, что делает приложение действительно большим. После 8 недель разработки, теперь возникают проблемы, из-за которых приложение сложно поддерживать и обновлять. Основные из них я имею дело с являетсяAndroid: Single activity, multiple views

  1. Я не могу передать ссылку на объект конструкторов деятельности. Фактически я нашел механизмы startActivityForResult - Intent - onActivityResult действительно ограничивает и приводит к грязному коду многих констант для действий на активность и большому количеству switchcase, что действительно трудно отслеживать поток приложения.

  2. Другая проблема заключается в том, что я не знаю, как управлять жизненным циклом всего приложения, поскольку каждое действие имеет свой жизненный цикл.

Я имел некоторый успешный опыт работы с LWUIT и J2ME – polish, которые игнорируют J2ME мидлетов (аналогичные андроида деятельности) и реализовать свою собственную архитектуру и оконную систему с только один MIDlet, как вход в приложение. Я придумал ту же идею для Android.

Чтобы уточнить, я имею в виду приложение только с одним основным Activity и других мероприятий, осуществляемых в качестве объектов, которые простираются View объекта, и эти представления могут быть динамически добавлены к основной деятельности FrameLayout и укладывают друг на друга. Логика действий может быть реализована в таких классах, и я даже нашел способ реализовать диалоги таким образом. Бизнес-объекты и объекты состояния могут быть переданы их конструктору, и это звучит неплохо, игнорируя его побочный эффект написания немного большего количества кода. Таким образом, слушатели также могут быть переданы конструкторам представлений, что упрощает управление интерфейсом пользовательского интерфейса и управление потоком.

Но вопросы:

  • Это хорошая практика?
  • Не привело бы меня к проблемам с производительностью или памятью?

Я также в курсе

Ни один из них явно не решать вопросы, касающиеся работ или практиков с разумными доказательствами или документированной ссылкой

Пожалуйста, помогите мне с этим

+0

Когда проект настолько огромен, код должен быть правильно спроектирован, вытащить всю общую функциональность. лучше структурировать данные (лучшие структуры данных). Они, по моему мнению, помогут уменьшить количество кода. – sat

+0

На самом деле я это сделал. Я следил за полу-шаблоном MVVM, хотя андроид не поддерживает привязку данных. основные проблемы находятся в слое пользовательского интерфейса и отображаются переключатели и светящиеся togather. – anonim

ответ

6

Есть популярные приложения на рынке с одним или несколькими действиями. Они используют фрагменты и переключают их. Я предпочел бы фрагменты над вашим подходом. Хотя я считаю, что фрагменты слишком сложны для многих целей, для вашего варианта использования это было бы хорошим решением. Ваше поведение пользовательского интерфейса должно быть в виде фрагментов, а ваша деятельность - это часть контроллера, передающая данные между вашими фрагментами. Фрагменты также имеют собственный жизненный цикл.

Мне тоже не нравится startActivityForResult.Если у меня есть набор действий - все предоставляющие данные - и я не знаю, в каком порядке они будут вызваны, я предпочитаю использовать одноэлементный класс, а затем использовать намерения для передачи данных между действиями. Но вы должны проанализировать свою проблему, чтобы получить хорошее решение.

+0

На самом деле я также использовал одноэлементный шаблон, поскольку приложение является одиночным пользователем, но моя проблема связана с намерениями. Я не могу сериализовать слушателей и передавать их в другие действия для обработки обратного вызова на основе действий пользователя и об фрагменте, я абсолютно соглашаюсь с вами, однако, когда я начал проект, я не знал о фрагментах, а сейчас в середине временной шкалы проекта я боюсь использовать их, потому что я не совсем знаком с ними. Я могу использовать их в следующей версии приложения. Спасибо – anonim

+4

Насколько сумасшедшим было бы создать надлежащую инфраструктуру MVC поверх Android, используя единую активность в качестве посредника между контроллерами и остальной частью платформы Android? Подобно тому, что происходит в веб-мире с одностраничными приложениями. Сообщение/напишите мне, если вы заинтересованы в сотрудничестве по этому вопросу. :) – Marchy

+0

Im bussy на данный момент, но если вы начнете такой проект, вы можете связаться со мной, возможно, я смогу потратить некоторое время в будущем на это. –

Смежные вопросы