2012-04-06 17 views
11

Cuando comencé mi proyecto de Android tuve un malentendido de que cada pantalla que se muestra en la aplicación debe ser una actividad nueva. Ahora que he terminado con el proyecto, lo he comprobado en mi emulador, así como en un par de teléfonos Android. Hasta el momento no estoy presenciando ningún problema, pero recientemente leí en alguna parte que demasiadas actividades en la aplicación son una muy mala idea.Demasiadas actividades en Android?

Actualmente mi aplicación tiene alrededor de 15-20 actividades. En principio escuché que debería estar alrededor de 5-6. ¿Necesito volver a estructurar mi código o simplemente terminar cada actividad después de que haya terminado, es suficiente?

Respuesta

30

Al crear aplicaciones complejas, definitivamente necesita crear muchas actividades. Depende de su aplicación cuántas actividades necesita. El número de actividades en un proyecto no afecta el rendimiento.

El efecto se produce por la cantidad de actividades en la pila de su Android. Por lo tanto, es mejor mantener de 5 a 6 actividades en la pila (finalice las actividades si ya no las necesita).

Así que cree tantas Actividades como requiera su aplicación pero mantenga un número menor de Actividades abiertas a la vez.

+2

+1 por la buena explicación. – Deva

+0

¿Cómo finalizar la actividad? –

+1

Tengo 15 actividades que el usuario abre constantemente. ¿Debo hacer algo para cerrar la actividad anterior? ¡Gracias! (+1) –

2

En última instancia, depende de lo que esté haciendo. Hay momentos en los que no puede modificar la vista lo suficiente como para hacer una diferencia. Idealmente, 5-6 actividades son geniales, pero en algunos casos eso no es imposible. He hecho una aplicación móvil con alrededor de 40 clases diferentes y alrededor de 18 actividades. Simplemente HABÍA que hacerse de esa manera en función de cómo la aplicación debía interactuar con el usuario. Si puedes unir 2 o 3 actividades en una sola, eso es genial. También te ayudará con el tamaño y la optimización del archivo, pero si no puedes, no te preocupes demasiado.

1

Yo diría que 15 pantallas diferentes = 15 actividades diferentes. Creo que una de las razones por las que algunos pueden reducir el número de actividades es debido a la introducción de fragmentos. Aunque uno discutirá por qué usar fragmentos si las actividades individuales funcionan. Supongo que depende de la preferencia de los desarrolladores.

+0

A menos que esté haciendo algo que se vea bien en una tableta y esté usando fragmentos. –

+0

Tengo 15 actividades que el usuario abre constantemente. ¿Debo hacer algo para cerrar la actividad anterior? ¡Gracias! (+1) –

3

El sistema Android intenta mantener un proceso de aplicación durante el mayor tiempo posible, pero con el tiempo necesita eliminar los procesos anteriores para reclamar memoria para procesos nuevos o más importantes. Esto se aplica a Activity s que se ejecutan en segundo plano ... los antiguos Activity s se administran por usted y se destruyen cuando el sistema necesita reclamar memoria para nuevos procesos.

Dicho esto, creo que hay dos cosas que debe considerar: la experiencia

  1. usuario. ¿Su aplicación realmente requiere 15-20 Activity s? ¿Puedes reducir el número de pantallas de alguna manera? Menos Activity s suele ser mejor, ya que requiere menos interacción cuando el usuario navega por la aplicación.

  2. Código de diseño. Si bien cada Activity tendrá su propia clase separada, esto no le impide tomar decisiones de diseño inteligentes al implementar su aplicación. Por ejemplo, puede intentar agrupar Activity s similares haciendo que extiendan un abstract class. A medida que los proyectos de Android crecen, se vuelven más difíciles de administrar. Compartir el código entre clases similares de esta manera asegurará que pueda realizar cambios simples en el núcleo de su aplicación sin demasiados problemas.

+0

Tengo 15 actividades que el usuario abre constantemente. ¿Debo hacer algo para cerrar la actividad anterior? ¡Gracias! (+1) –

6

Si su proyecto tiene muchas actividades pero algunas actividades no son importantes, significa que no necesita ninguna actividad después de que comience otra actividad.

En conjunto archivo de manifiesto: android:noHistory="true"

Ejemplo:

Activity1 -> Activity2 -> Activity3 -> Activity4..................-> Activity20 

En archivo de manifiesto:

activity android:name=".Activity1" android:label="@string/app_name" android:noHistory="true" 

si u llamar de nuevo Actividad1 usando Intención que finaliza el proceso indicado() antes de startActivity()

Creo que esto puede ayudarlo

Cuestiones relacionadas