Какую архитектуру лучше использовать в Android?

279
22 октября 2017, 20:03

Я знаю 2 архитектуры.

  1. Использовать Activity для каждого окна. Первый случай хорошо простой, но есть проблемы с производительностью и грязнотой в manifest.

  2. Использовать фрагменты и 1 Activity. Такой способ хорошо производительностью и чистотой в manifeste, но трудно реализовать его. Так как надо писать много кода и проверок.

Если бы была какая-нибудь библиотека, которая бы отвечала за все моменты по созданию фрагментов, извелечения их из стеков, действия по нажатии back и т.д. То думаю данная архитектура была бы лучшей.

Знаете ли вы какие-нибудь еще архитектуры под Android, и какую архитектуру используют профи?

Answer 1

https://github.com/terrakok/Cicerone - одна из библиотек для навигации в андроид, там есть стандартный менеджер для фрагментов, можно свой написать для чего угодно.

некоторые разработчики отказываются от фрагментов и пишут экраны на вьюхах. вот популярные библиотеки:

https://github.com/Zhuinden/simple-stack

https://github.com/square/flow

https://github.com/bluelinelabs/Conductor

В целом проще всего писать на активити. Если нужна сложная навигация и переиспользуемые модули, то гугл рекомендует использовать фрагменты. Но у них сложный жизненный цикл и не совсем удачное API, поэтому многие вместо фрагментов наследуются от лэйаутов и пишут логику отображения там. Но у вьюх нет логики навигации, которая есть у фрагментов, для этого и используются либы типа флоу и симплбэкстэк. Либо бэкстэк и роутер пишется самостоятельно. Вот у этого парня https://hackernoon.com/@Zhuinden есть куча статей о том как не использовать фрагменты, аргументы против фрагментов и за вьюхи, советую ознакомиться, чтобы лучше понимать проблему.

И вот в довесок набор примеров от профи: https://github.com/googlesamples/android-architecture

READ ALSO
Удалить несколько строк из JTable и БД

Удалить несколько строк из JTable и БД

Необходимо сделать так, чтобы можно было выделить левой кнопкой несколько строк в JTable и по правой кнопке удалять выделенные строки из таблицы...

307
Перевод строки форматного вида в Double

Перевод строки форматного вида в Double

Есть строка такого вида: 6356909871101D-04

265
Мониторинг EditText в Android

Мониторинг EditText в Android

Если пользователь введет текст в EditText, и в нем содержится подстрока "more", то она должна быть выделена красным

224
Как сделать курсор в EditText немигающим?

Как сделать курсор в EditText немигающим?

В приложении армянская клавиатура можно набрать армянские буквы в EditText через кнопки, в то же время активна и системная клавиатура, чтобы...

265