2012-06-02 15 views
7

No soy un experto en Android aunque he desarrollado una aplicación que consta de más de 50 actividades que hacen que la aplicación sea realmente grande. Después de 8 semanas de desarrollo, ahora hay problemas que causaron que la aplicación sea difícil de mantener y actualizar. más importantes que trato sonAndroid: actividad única, vistas múltiples

  1. no puedo pasar referencia de objeto a constructores actividades. De hecho, encontré los mecanismos de startActivityForResult - Intent - onActivityResult realmente limitadores y resulta en código sucio de muchas constantes para acciones por actividad y una gran cantidad de switchcase que es realmente difícil de seguir el flujo de la aplicación.

  2. Otro problema es que no sé cómo administrar el ciclo de vida de toda la aplicación ya que cada actividad tiene su propio ciclo de vida.

Había tenido una experiencia exitosa con LWUIT y J2ME – polish que ignoran MIDlets J2ME (similares a la actividad androide) y poner en práctica su propia arquitectura y sistema de ventanas con un solo MIDlet como la entrada a la aplicación. He venido con la misma idea para Android.

Para aclarar, estoy pensando en una aplicación con sólo uno Activity principales y otras actividades llevadas a cabo como objetos que se extienden View objeto y estos puntos de vista se pueden añadir de forma dinámica con la actividad principal FrameLayout y apilar unas sobre otras. La lógica de las actividades se puede implementar en dichas clases e incluso he encontrado una manera de implementar diálogos de esta manera. Los objetos comerciales y estatales se pueden pasar a su constructor y suena bien ignorar su efecto secundario de escribir un poco más de código. De esta forma, los oyentes también pueden pasarse a los constructores de las vistas, lo que facilita el cambio de interfaz de usuario de la aplicación y la gestión del flujo.

Pero las preguntas son:

  • ¿Es una buena práctica?
  • ¿No me llevaría a problemas de rendimiento o memoria?

También soy consciente de

Ninguna de estas abordar claramente las cuestiones con respecto al rendimiento o la práctica con pruebas razonables o referencia documentada

Por favor alguien me ayude con esto

+0

Cuando el proyecto es tan grande, el código tiene que diseñarse correctamente, saque todas las funcionalidades comunes. mejor estructurar los datos (mejores estructuras de datos). Estos me ayudarán a reducir gran cantidad de código. – sat

+0

de hecho lo he hecho. He seguido un patrón semi MVVM aunque Android no es compatible con el enlace de datos. los principales problemas residen en la capa UI y las vistas cambian y brillan. – anonim

Respuesta

6

Hay aplicaciones populares en el mercado con solo una o algunas actividades. Usan fragmentos y los cambian. Preferiría fragmentos sobre tu enfoque. Aunque creo que los fragmentos son demasiado complejos para muchos propósitos, para su caso de uso sería una buena solución. Su comportamiento de UI debe estar en fragmentos, y su actividad es la parte del controlador que transfiere datos entre sus fragmentos. Los fragmentos también tienen un ciclo de vida propio.

No me gusta startActivityForResult tampoco.Si tengo un conjunto de actividades, todas proporcionan datos, y no sé en qué orden serán llamadas, prefiero usar una clase única y luego usar intenciones para la transmisión de datos entre actividades. Pero debes analizar tu problema para obtener una buena solución.

+0

En realidad, también he explotado el patrón singleton ya que la aplicación es de usuario único, pero mi problema es con Intents. No puedo serializar oyentes y pasarlos a otras actividades para el procesamiento de devolución de llamada en función de las acciones del usuario y sobre Fragment. Sin embargo, cuando comencé el proyecto no estaba al tanto de los fragmentos y ahora, en medio de la línea de tiempo del proyecto, me temo de usarlos porque no estoy completamente familiarizado con ellos. Puedo usarlos en la próxima versión de la aplicación. Gracias – anonim

+4

¿Qué tan loco sería construir un marco MVC apropiado sobre Android utilizando una sola actividad como mediador entre los controladores y el resto del marco de Android? Similar a lo que sucede en el mundo de la web con aplicaciones de una sola página. Mensaje/Envíeme un correo electrónico si está interesado en colaborar en esto. :) – Marchy

+0

Estoy bussy en este momento, pero si comienzas un proyecto de este tipo, puedes contactarme para que sea posible que pueda pasar algún tiempo en el futuro. –

Cuestiones relacionadas