Подтвердить что ты не робот

Шаблон "Одно действие, несколько просмотров": преимущества и недостатки

Этот шаблон похож на шаблон Main Servlet (Front Controller), который используется для разработки веб-приложений.

Основная идея этого шаблона: у нас есть одно действие, которое управляет несколькими представлениями, и эта деятельность отвечает за представление текущего содержимого. Не все взгляды нуждаются в функциональной активности (например, методы жизненного цикла), поэтому главный вопрос: , если я могу идти без активности, почему я должен его использовать?


Я нашел следующие недостатки использования этого шаблона:

  • Официальный источник не рекомендует Перегрузка экрана одного действия но они не объясняют, почему.

  • Мы не можем использовать TabActivity, ListActivity, MapActivity. Но есть и трюки, которые можно обойти без них.

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

Я нашел следующие преимущества использования этого шаблона:

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

Что вы думаете об этом шаблоне? Не могли бы вы предоставить какие-либо другие преимущества/недостатки?

4b9b3361

Ответ 1

Мы не можем использовать TabActivity, ListAcivity, MapActivity. Но есть и трюки, которые можно обойти без них.

Вы должны использовать MapActivity, если хотите использовать MapView. Вы должны использовать PreferenceActivity, если хотите использовать XML предпочтений.

Необходимо вести историю самостоятельно. Но это не так сложно развиваться.

Трудность в управлении собственной историей будет во многом зависеть от того, что должно быть в истории. Реализация истории для простого мастера будет довольно простой. Однако это очень простой сценарий. В Android существует довольно много кода управления историей, который вам придется переписывать для любых других случаев.

Вы также забыли:

# 5. Вы будете склонны к утечке памяти, потому что вы забудете очистить материал, и Android не будет очищать вещи (поскольку предполагается, что вы будете использовать множество небольших действий, как они рекомендуют).

# 6. Ваше управление состоянием для изменения конфигурации (ротация, док-станция, изменение SIM-карты, изменение локали, несколько дисплеев, масштаб шрифта) будет более сложным, потому что теперь вам также нужно выяснить, какие дополнительные вещи (например, история) должны быть частью состояния, и вы имеете дело со всеми из них одновременно, а не по активности по времени.

# 7. Наличие нескольких точек входа для вашего приложения становится более сложным (например, несколько значков в панели запуска, виджет приложения, связанный с какой-либо другой деятельностью, отличной от основной, и т.д.).

Быстрее менять содержание текущей активности, чем запускать другое действие

Для большинства современных устройств Android разница в скорости не будет значимой для большинства пользователей, IMHO.

Если у нас есть только один контекст активности, проще найти и решить проблемы с утечками памяти.

За исключением того, что у вас все еще есть более одного контекста активности. Помните: ваша активность, большая или малая, все еще уничтожается и воссоздается при изменениях конфигурации.

Что вы думаете об этом шаблоне?

Coase "природа теории фирмы" говорит, что компании расширяются до тех пор, пока транзакционные издержки на то, чтобы делать вещи внутри, становились выше транзакционных издержек за другие фирмы делают то же самое.

Мерфи "природа деятельности" утверждает, что активность расширяется до тех пор, пока транзакционные издержки на то, чтобы делать вещи внутри, становились выше, чем транзакционные издержки на то, чтобы другие действия делали одни и те же вещи. Разработчики Android будут стремиться к модели "пользовательской транзакции" для действий - вещи, которые тесно связаны (например, шаги в мастере), будут обрабатываться в одиночной деятельности и в вещах, которые имеют мало отношения (например, просмотр или поиск) vs. settings vs. help vs. about) будут обрабатываться в разных действиях.

Ответ 2

Это будет ужасно, если вы добавите новую функциональность позже. Я также не уверен, что это будет намного быстрее, чем пользователь мог заметить. У вас есть компоненты как более мелкие куски, которые легче изменить или заменить. Это, безусловно, путь.