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


¿Qué es más eficiente? Estática, transferencia de datos, preferencias compartidas, base de datos …?

Hace poco estaba haciendo una aplicación en android y en alguna parte me dieron una duda de que es la forma eficiente de compartir datos. Como puedo declarar una variable estática en una clase y llamar a esa variable de la otra clase usando Classname.Variablename o podría pasar esos datos con mi intención y obtener datos de la intención de la otra clase o puedo usar las preferencias compartidas y obtener los datos de él o yo podría incluso almacenar esos datos en la base de datos y recuperar de la otra clase de la base de datos. ¿Cuál fue mi duda que será la forma más eficiente de hacer eso (obtener datos)? Dado que las aplicaciones de Android finalmente están diseñadas para el uso de memoria de teléfonos y la eficiencia debe ser limitaciones. ¿Podría alguien me guía en el camino correcto, sería muy útil.

  • Font-face en android 4.0.x no funciona
  • Cómo comprobar el espacio disponible en el dispositivo Android? En la tarjeta SD?
  • Cómo crear un archivo jar desde android studio
  • Error de sincronización de Gradle en el estudio de Android al importar un proyecto
  • Configuración de la API de la cámara Android en ISO?
  • ¿Dónde se establece el camino de clase en un cordoba cli plugin construir
  • Anotación @Override en Android
  • ¿Cómo conservar la posición de RecyclerView tras el cambio de Orientación, mientras usa Firebase & ChildEventListener?
  • ¿Cómo obtener la id de celda correcta y el código de área de la ubicación en Android?
  • Android alarmmanager alarmas múltiples, uno sobrescribe el otro?
  • ¿Cómo detectar cambios de orientación en el diseño en Android?
  • ¿Es posible obtener el número de descargas de una aplicación de Google Play?
  • 4 Solutions collect form web for “¿Qué es más eficiente? Estática, transferencia de datos, preferencias compartidas, base de datos …?”

    Mis opiniones:

    Cada uno es el mejor depende del escenario. Dejame explicar.

    Variable estática:

    Las variables estáticas son formas comunes de dar acceso a todo el contexto de la aplicación. Si desea mantener unos pocos datos que no es necesario mantener después de que la aplicación salió, este es el mejor.

    Transmisión de datos a través de la intención:

    Esto no es un tipo de almacenamiento de datos. Este es un tipo de intercambio de datos. Creo que esta es la mejor manera de pasar los datos de una actividad a otra. Pero mantener las claves para los valores en Constantes es una buena cosa de la programación.

    Preferencias compartidas:

    Preferencias compartidas no es más que una simple tabla que tiene dos columnas. (valor clave).

    ventajas:

    1. Recuperación rápida
    2. Fácil de entender y programar

    contras:

    1. Las llaves de mantenimiento son difíciles si almacenamos muchos valores.
    2. El usuario puede borrar esto en cualquier momento.

    Base de datos:

    Cuando tenemos una gran cantidad de valores para almacenar con estructura compleja, nos quedamos con sólo una gran solución, es decir. DB.

    Ventajas

    1. Podemos mantener la estructura de los datos.
    2. Android tiene APIs agradables y simples para manejar las operaciones sqlite.

    contras

    1. La operación es poco lenta en comparación con las preferencias compartidas.
    2. usuario puede borrar esto en cualquier momento.

    Así que encontramos que el problema principal es que no podemos mantener la persistencia, sea cual sea el almacenamiento que utilicemos. Una solución simple y eficaz es mantener datos en línea y sincronizarlos con db móvil cada vez que se inicie la aplicación.

    Puedo estar equivocado, pero siento que tengo que compartir mi conocimiento / experiencia … así la manera más rápida y más fácil es usar estática … pero no recomiendo esto.

    Mi selección sería: Base de datos

    Razones:

    1- Al declarar variable estática, no es not reliable , como en algún momento, cuando sus aplicaciones o alguna otra aplicación está tomando demasiada memoria, GC tratará de recopilar todos los objetos de la no referencia, la estática es un buen candidato aquí … como Actividad A tiene variables estáticas y usted está actualmente en la actividad B, ahora gc quitará A y sus objetos, allí es una ocasión que también recogerá estático. Ahora seleccionando la base de datos es obvio aquí, no necesito decirte porque, dentro de tu actividad currect del ur se puede siempre recuperar datos de la base de datos.

    2- Declarando variable estática, si es sólo un tipo de datos int o pequeño, eso no es un gran problema, pero lo que si vas a guardar una gran lista de estructuras complejas, entonces hay una alta probabilidad de que su actividad se leak memory que también va a dar problemas u. No hay pérdida si utiliza correctamente la base de datos.

    SharedPreference/intent también es bueno / rápido / memoria effecient (supongo), pero puede llegar a ser un poco desordenado al pasar la estructura de gran complejidad.

    Así que para resumir, si sólo desea pasar una pequeña estructura (string + int) y su aplicación no está tocando los límites de heap entonces u puede utilizar static pero si está haciendo algunas llamadas intensas de memoria y pasar unos datos algo grandes entonces database es confiable, puede ser poco más lento que la estática, pero lo suficientemente rápido que no aviso.

    Espero eso ayude.

    Según mi punto de vista,

    Depende de qué tipo de datos y cuán importante es. Usted puede utilizarlos de una manera siguiente,

    • Static : cuando tiene un uso limitado hasta que la aplicación se esté ejecutando.
    • SharedPreferenced : cuando el tamaño de los datos es muy pequeño pero importante para el uso futuro.
    • Database : cuando tiene un gran tamaño de datos.

    No vaya para las variables estáticas. Sería nulo, cuando usted vuelve a la actividad.

    Ver esta respuesta para más detalles

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