R
R
robert_n2016-01-21 16:29:23
Android
robert_n, 2016-01-21 16:29:23

What is the package architecture in Android Studio?

Hello!
I am writing an application now, and I am already starting to forget and get confused where I have this or that class. Please tell me how you organize the structure of your project. What class packages do you create?
For now, I have created the following:
com.mycompany.app
|__activities
|__adapters
|__fragments
|__models
|__utils
I would like something similar to MVC. Everything to be logical. Will it be right? And tell me good examples or tips on the correct architecture of android applications.
Thanks in advance!)

Answer the question

In order to leave comments, you need to log in

4 answer(s)
G
georgeci, 2016-01-21
@robert_n

-database
--dao
--schema
-di
--module
--component
-ui
--activity
--fragment
--adapter
--customview
--presenter
--widget
-api
--response
-model
-utils
--rx
-- logger
--bus
---event

P
Peter, 2016-01-21
@petermzg

controls
models
services
utilities

V
VZVZ, 2016-01-21
@VZVZ

> Хотелось бы что-то похожее на MVC. Чтобы все было логично. Правильно ли будет так?
MVC не подходит для мобила и десктопа. Ибо там не может быть C, такого, как на вебе.
> как вы организуете структуру вашего проекта. Какие пакеты классов вы создаете?
Прежде всего, я создаю обертки для стандартного API. Можно сказать - фреймворк.
На винде выглядит дико писать под голое API ОС и так давным-давно никто не делает, пишут под .NET или хотя бы VCL. На Android это в порядке вещей. Линукс же.
Так как разрабы самой ОС не позаботились об этом, то заботиться приходится самому.
И даже на уровне хелловорлда чувствуется польза от этого, я не пишу
Toast.makeText(this.getActivity(), "Blablabla", 500).show();
Я просто пишу:
MessageBox.show("Blablabla");
А все остальное делает самописный класс MessageBox. Время показа Toast рассчитывается автоматом по длине текста, при этом метод show имеет и гибкие перегрузки с кучей параметров, все те же, что и в нативном Toast.
Для удобства re-use, все подобные классы лучше вынести в отдельный проект, отдельный jarник. А собственно код под этот фреймворк - писать прямо в своем проекте.
В остальном архитектура зависит от задачи, скажем HTTP-библиотека должна иметь классы GetRequest и PostRequest, и высокоуровневый класс HttpClient с контейнером куков, и т.д.
Чтобы быть хорошим архитектором, однозначно нужно рассмотреть максимум готовых фреймворков, чтобы извлечь из них лучшее.

K
Kren_vpravo, 2016-01-28
@Kren_vpravo

Перешел в разбиению пакетов по задачам, а не по типу классов.
Как тут https://github.com/google/iosched/tree/master/andr...
Но в команде так наверное не получится из-за частого рефакторинга, когда полный список всех фич перед началом проекта не известен.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question