Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


En Android cada pantalla debe ser su propia actividad o diseño?

Ok, estoy diseñando una aplicación que tiene un diseño muy simple de 62 pantallas de contenido, a través de 27 pantallas de menú. En total se trata de 89 actividades.

Por el momento, cada pantalla de contenido es una actividad que solo llama a un diseño XML (texto, botones e imagen) y añade una funcionalidad onClick.

Cada pantalla de menú es ListActivity y al pulsar cada elemento de la lista se abre la actividad de ese elemento (ya sea otra pantalla de menú o una pantalla de contenido).

Por el momento lo estoy probando con 3 Pantallas de Menú y una Pantalla de Contenido. Es muy fácil desplazarse a través de todos ellos, sin embargo, me preocupa que cuando termine la aplicación tendrá demasiadas actividades y hacer la aplicación lenta y slugish. En un uso promedio de la aplicación me imagino que el usuario no utilizaría más de 10 actividades, pero no estoy seguro de si Android sería anticipar la creación de las otras actividades no utilizadas o qué.

Así que otra manera de implementar esto sería tener sólo unas pocas actividades (tal vez 1 para un MainMenu, 1 para un subMenu y 1 para un ContentScreen) que sólo el trabajo que el diseño para mostrar. Sin embargo, siento que esto significaría que cada actividad tiene un montón de trabajo mucho más que hacer y también pierdo la funcionalidad de presionar el botón Atrás haciendo que el usuario vuelva a subir a través de la jerarquía de menú (y la codificación de un botón Implican un caso masivo para el onClick que implica cada solo disposición posible, todos 89 de ellos!).

¿Cuál sería la mejor manera de ir sobre esta aplicación?

Cualquier ayuda es muy apreciada

  • ¿Alternativa a weightSum en RelativeLayout?
  • Notificación personalizada con vista remota en Android
  • ImageButton con diferentes estados tamaño de las imágenes
  • Galería de Android fullscreen
  • Cambiar la separación entre el grupo de encabezados y el primer elemento
  • Cómo activar el receptor de difusión de la notificación
  • Programar '? SelectableItemBackground' en la vista de Android
  • Divisor para LinearLayout vertical?
  • 3 Solutions collect form web for “En Android cada pantalla debe ser su propia actividad o diseño?”

    A menos que los diseños y comportamientos difieran significativamente entre las actividades del menú y las actividades de contenido, me gustaría ir con "sólo un enfoque de algunas actividades".

    El botón Atrás no romperá, Android mantiene un registro de su atraso.

    ¿Realmente necesitas 89 diseños diferentes? Si se trata principalmente de contenido lo que es diferente entre ellos, almacenar contenido en una base de datos o archivo o en /res/ , reutilizar diseños y llenar áreas de contenido de diseño en tiempo de ejecución.


    Actualizaciones:

    ¿No sería más fácil tener una actividad por página de contenido que en onCreate () llena el diseño con el contenido adecuado?

    Depende de cuán diferente sea tu código onCreate() . Si su onCreate() va a ser un switch gigante con 62 cláusulas de case tremendamente diferentes, entonces probablemente es mejor ir con pequeñas actividades separadas, no una enorme. Si puede generalizar el código onCreate() , y mantenerlo por debajo, por ejemplo, 100 líneas y 10 sentencias de sucursal, eso sería un camino a seguir.

    Para dar un ejemplo, hace algún tiempo estaba construyendo una aplicación sencilla que tiene una colección de preguntas de examen y las presenta al azar al usuario. Cada pregunta tiene texto de pregunta, ilustración y 2-4 opciones de respuestas. Había alrededor de 500 preguntas diferentes. Aquí está el código que carga una pregunta de la base de datos y actualiza el diseño. Observe que maneja un número variable de respuestas, y la posibilidad de que algunas preguntas no tengan ilustración.

     public void loadQuestion(int id) { // Columns in questions table: // CREATE TABLE questions ( // id integer, // q text, // a1 text, // a2 text, // a3 text, // a4 text, // a5 text, // correct integer, // img blob // ); Cursor c = mDatabase.rawQuery("SELECT * FROM questions where id=" + id, null); c.moveToFirst(); TextView text = (TextView) findViewById(R.id.text); text.setText(c.getString(1)); RadioGroup g = (RadioGroup) findViewById(R.id.answers); g.clearCheck(); // Load answers! int correct = c.getInt(7); int[] buttons = new int[] {R.id.a1, R.id.a2, R.id.a3, R.id.a4, R.id.a5}; for (int i=0; i < 5; i++) { String answerText = c.getString(i + 2); RadioButton rb = (RadioButton) findViewById(buttons[i]); if (answerText != null && answerText.length() > 0) { rb.setText(answerText); rb.setTag(i + 1 == correct ? "correct" : null); rb.setVisibility(RadioButton.VISIBLE); } else { rb.setVisibility(RadioButton.GONE); } } byte[] encoded = c.getBlob(8); ImageView iv = (ImageView) findViewById(R.id.image); if (encoded != null && encoded.length > 0) { iv.setVisibility(ImageView.VISIBLE); iv.setImageBitmap(bytesToBitmap(encoded)); } else { iv.setVisibility(ImageView.GONE); } } 

    ¿Qué quieres decir con: botón Volver no se romperá, Android mantiene un registro de su atraso?

    A medida que el usuario se mueve de una actividad a otra, a través de las aplicaciones, el sistema Android mantiene un historial de navegación lineal de las actividades que el usuario ha visitado. Ésta es la pila de actividad, también conocida como la pila trasera. En general, cuando un usuario inicia una nueva actividad, se agrega a la pila de actividades, por lo que al pulsar BACK se muestra la actividad anterior en la pila.

    (De las Directrices de Diseño de Actividades y Tareas )

    No creo que vaya a ser lento sólo por el número de actividades declaradas. Sin embargo, probablemente debería reutilizar algunos de sus diseños a través de las actividades: http://developer.android.com/resources/articles/layout-tricks-merge.html

    Puede reutilizar su diseño y puede utilizar los métodos startAcitity y startActivityForResult para gestionar la efectividad de las actividades.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.