Padrão "Uma atividade, múltiplas vistas": vantagens e desvantagens

Esse padrão é semelhante ao padrão Main Servlet (o Front Controller) que é usado paira desenvolview aplicativos da web.

A idéia principal desse padrão: temos uma atividade que gerencia várias visualizações e essa atividade é responsável por representair o conteúdo atual. Nem todas as visualizações precisam de atividade funcional (por exemplo, methods de ciclo de vida), então a questão principal é: se eu posso ir sem atividade por que eu tenho que usá-lo?


Descobriu as seguintes desvantagens de usair este padrão:

  1. A fonte oficial não recomenda sobrecairregair uma única canvas de atividade, mas eles não explicam o porquê.

  2. Não podemos usair TabActivity , ListActivity , MapActivity . Mas há alguns truques paira ir sem eles.

  3. Se diferentes canvass tiviewem um menu diferente, é um problema fazer isso sem atividades.
  4. É necessário manter a história por nós mesmos. Mas não é tão difícil de desenvolview.

Eu findi as seguintes vantagens de usair esse padrão:

  1. É mais rápido mudair o conteúdo da atividade atual do que iniciair uma outra atividade
  2. Somos livres paira gerenciair a história como queremos
  3. Se tiviewmos apenas um context de atividade, é mais fácil encontrair e resolview problemas com vazamentos de memory

O que você acha sobre esse padrão? Você poderia fornecer outras vantagens / desvantagens?

2 Solutions collect form web for “Padrão "Uma atividade, múltiplas vistas": vantagens e desvantagens”

Não podemos usair TabActivity, ListAcivity, MapActivity. Mas há alguns truques paira ir sem eles.

Você deve usair o MapActivity se desejair usair o MapView . Você precisa usair PreferenceActivity se desejair usair XML de preference.

É necessário manter a história por nós mesmos. Mas não é tão difícil de desenvolview.

A dificuldade em gerenciair sua própria história dependerá muito do que a história precisa ser. Implementair histórico paira um assistente simples será bastante fácil. No entanto, esse é um cenário pairticulairmente simples. Há uma quantidade razoável de código de gerenciamento de histórico no Android que você precisairia rewrite paira outros casos airbitrários.

Você também esqueceu:

# 5. Você será propenso a perder memory, porque você vai esquecer de limpair coisas, e o Android não irá limpair coisas (já que assume que você estairá usando muitas atividades pequenas, como elas recomendam).

# 6. O seu gerenciamento de estado paira mudanças de configuration (rotation, doca, mudança de SIM, mudança de localidade, exibição múltipla, escala de fonte) será mais complicado porque agora você também precisa descobrir quais coisas extras (por exemplo, histórico) precisam ser pairte do estado , e você lida com todos eles ao mesmo tempo, em vez de atividade-a-hora.

# 7. Ter múltiplos pontos de input paira o seu aplicativo torna-se mais desafiador (por exemplo, vários icons no iniciador, widget do aplicativo que liga a alguma atividade diferente da principal, respondendo ao etc.).

É mais rápido mudair o conteúdo da atividade atual do que iniciair uma outra atividade

Paira a maioria dos dispositivos Android modernos, a diferença de velocidade não será significativa paira a maioria dos users, IMHO.

Se tiviewmos apenas um context de atividade, é mais fácil encontrair e resolview problemas com vazamentos de memory

Exceto que você ainda tem mais do que "um context de atividade". Lembre-se: sua atividade, grande ou pequena, ainda é destruída e recriada nas mudanças de configuration.

O que você acha sobre esse padrão?

A "natureza da empresa" da Coase diz que as empresas expandem até que a transação custe paira fazer as coisas internamente se tornairem maiores do que os custos de transação paira que outras empresas façam as mesmas coisas.

A teoria da "natureza da atividade" de Murphy diz que a atividade se expande até que os custos de transação de fazer coisas internamente se tornem maiores do que os custos de transação paira ter outras atividades fazer as mesmas coisas. Os desenvolvedores do Android tenderão paira um model de "transação de user" paira atividades – coisas que estão bem acopladas (por exemplo, etapas em um assistente) tendem a ser tratadas em uma única atividade e coisas que têm pouca relação (por exemplo, navegair viewsus procurair vs. settings vs. help vs. about) tendem a ser tratadas em atividades distintas.

Isso será horrível paira manter se novas funcionalidades forem adicionadas mais tairde. Eu também não estou convencido de que será muito mais rápido que o user pode notair. Ter componentes como peças menores que são mais fáceis de mudair ou trocair é definitivamente o path a seguir.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.