Все на одном Activity - Android - PullRequest
       28

Все на одном Activity - Android

1 голос
/ 28 февраля 2012

Как вы думаете? Я думаю создать маленькое приложение и поместить все в одну активность. Просто измените содержание просмотров. Избавьтесь от проблем с обменом данными, начать с последних приложений и еще пару. Я знаю, что таким образом я могу получить гораздо больше проблем, таких как stackoverflow. Но кто-то пробовал это?

Ответы [ 6 ]

3 голосов
/ 28 февраля 2012

Мой друг и я подали первое заявление вместе, и он настоял на том, чтобы сделать это так ... Это было медлительно, нестабильно и его можно охарактеризовать как пример "худшей практики".

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

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

Мораль, которую я выучил:

  1. Это ужасная идея объединить все в одно занятие , если вашему приложению на самом деле нужно больше компонентов !!!Цитата

  2. Мудро выбирайте своего компаньона для программирования!

  3. Learn Learn Learn ..

удачи;)

2 голосов
/ 28 февраля 2012

Да ... это определенно выполнимо.Тем не менее, это действительно ужасная идея для всего, кроме самых простых приложений.У меня был тот же импульс, когда я только начинал и создал приложение с 5 экранами.Это быстро стало намного больше проблем, чем оно того стоило, и то, что одно действие было так много кода, это был кошмар.

Если вы нацелены на Honeycomb и> вам просто нужно использовать фрагменты.Это гораздо приятнее.

Если вашей основной мотивацией для этого является сложность передачи данных из Activity в Activity, вам следует подумать о расширении Application и просто сохранить все ваши постоянные данные (под этим я подразумеваю то, что вам нужно, покаприложение на самом деле работает, а не когда оно находится в фоновом режиме) там.

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

1 голос
/ 28 февраля 2012

Да, пара моих первых приложений была сделана с использованием именно этого подхода.Есть некоторые преимущества, такие как:

  1. Обычно он работает немного быстрее, чем переход от одного занятия к другому.
  2. У вас есть только один Activity класс.

и некоторые недостатки:

  1. Вы можете запутаться, если у вас слишком много экранов.
  2. Вы должны сами закодировать логику смены экрана.
  3. Этоне считается обычной практикой для разработки под Android.

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

0 голосов
/ 29 ноября 2012

Я согласен со всеми плюсами использования Деятельностей и Фрагментов.Мое приложение для карточных игр изначально было написано с 1 действием и 7 просмотрами.В конце концов я реорганизовал приложение для использования 7 операций.Время запуска приложения значительно сократилось.Однако при использовании 7 представлений у приложения никогда не было проблем с памятью, и после загрузки он быстро высвечивался между экранами.

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

Наконец, вам не нужно использовать подход «все или ничего».Вы всегда можете смешать оба решения в своем приложении, что я и решил.Я использую Действия для редко используемых экранов и Views / ViewSwitcher для основных 2 экранов, которые часто используются.Это лучшее из обоих миров.

0 голосов
/ 28 февраля 2012

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

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

0 голосов
/ 28 февраля 2012

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

Например Вы можете создавать различные фрагменты и вызывать их в виде активности; ---

 public void onStatusClick(View view)
    {
        setFragment(new HomeFragment());
    }

    public void onNotificationsClick(View view)
    {
        setFragment(new NotificationsFragment());
    }


    public void onContactClick(View view)
    {
        setFragment(new ContactFragment());
    }

    public void setFragment(Fragment fragment)
    {
        FrameLayout framelayout = (FrameLayout) findViewById(R.id.frme_container);

        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(framelayout.getId(), fragment).commit();

    }   
...