2012-04-26 19 views
25

¿Por qué usamos la base de datos sqlite en android? Estoy desarrollando una aplicación de Android donde los datos se deben obtener del servidor y hacer algunos cálculos de datos y mostrarlos en la interfaz de usuario.¿Por qué usar la base de datos sqlite en Android?

¿Es bueno para mí buscar los datos en la base de datos sqlite y actualizar la interfaz de usuario en intervalos regulares desde sqlite en 20 minutos o será bueno enviar la solicitud HTTP al servidor y actualizar los datos de la respuesta en la interfaz de usuario.

Quería saber cuál sería mejor y por qué? ¿Por qué involucrar a sqlite DB? Los datos corresponden a algunos datos de la tabla 40X40 en los que se debe realizar un procesamiento matemático pesado y luego se muestran en la interfaz de usuario (similar a la aplicación del mercado de valores) y los datos deben borrarse cada 12 horas. PLZ de asesoramiento Rgds, Raul

Respuesta

24

Es bueno usar la base de datos en su caso.

Pros:

  • Si la aplicación se cierra el de los datos de la memoria se perderán, pero después de que usted será capaz de restaurar el estado de la base de datos si tiene uno
  • Especialmente para el caso de cálculos complejos es bueno almacenar el resultado una vez en la base de datos y no volver a calcularlo varias veces bajo demanda
  • La base de datos desatará su interfaz de usuario de la conexión a Internet y así podrá mostrar los resultados incluso si no hay internet conexión
  • Usando la base de datos podrá obtener los datos actualizados de un servicio en segundo plano, sin afectar su interfaz de usuario
  • Organizar sus datos en la base de datos generalmente hace que sea mucho más fácil administrar todos los datos de la aplicación.

Contras:

  • Adición de la base de datos se requiere un poco de esfuerzo adicional de su lado

Como se puede ver mi lista demuestra que puedes usar la base de datos en su caso. Tal vez soy parcial, pero al menos te ofrezco cosas que considerar.

0

12 horas es mucho tiempo, así que en vez de dejar sus datos vagan en la memoria RAM, yo sugeriría que use la base de datos. Porque nunca sabes cuándo necesitarás leerlo nuevamente.

De lo contrario, si su propósito es solo descargar datos, procesarlos y mostrarlos en actividad, entonces no necesita incluir bases de datos porque si su aplicación está cerrada (debido a usuarios o poca memoria), de todos modos su aplicación será descargando datos actualizados del servidor ... ¿estoy en lo cierto?

+0

de datos Sí (automáticamente la solicitud se envía al servidor cada 30 minutos (configurable) y cuando el usuario desea ver los datos sobre la interfaz de usuario tiene que presionar/tocar manualmente algún botón de UI que mostrará los datos (después del cálculo), si presiona antes del tiempo configurable los datos serán los mismos y en caso de que si lo presiona> 30 minutos, obtendrá los datos más recientes. – Raulp

+0

entonces no creo que tenga que llevar la molestia de la base de datos en sus requisitos. Es bastante sencillo y sencillo de hacer sin base de datos – waqaslam

4

Realmente es una decisión de diseño, SQLite ofrece una forma muy robusta de organizar y conservar sus datos, usted solo tiene otras opciones para escribir en un archivo, o para guardar en SharedPrefs, ambos métodos se vuelven mucho más difíciles de administrar una vez que el tamaño de sus datos comience a crecer, como manualmente debe mantener una lista de objetos y administrar sus nombres, etc. Los datos de 40 x 40 tablas son lo suficientemente grandes como para justificar el uso de SQLite, incluso si está cayendo y recreando la tabla cada 12 horas

Es posible que desee considerar el uso de un ORM para hacer ir a buscar y guardar los datos de la base de datos más simple, ORMLite es bueno y compatible con Android

http://ormlite.com/

+0

¿Puedo usarlo? ¿Qué tan bueno será fr om the sqlite? ¿Por qué preferir esto que Sqlite? Sqlite está incorporado, esto es externo (puedo tener que usar jar de él) – Raulp

+2

@softy Ormlite es solo una biblioteca auxiliar que debería facilitar el uso de SQLite (haciendo mapeo relacional de objetos) . Básicamente, de esa manera no tendrá que preocuparse por los procedimientos de escritura/lectura. Lo he usado en Android. Además, el impacto en el rendimiento de agregar una biblioteca adicional es insignificante. –

3

Si su aplicación se basa en gran medida de una conexión a Internet no necesita almacenar información en la base de datos. Sin embargo, si desea utilizar la aplicación donde tiene mala o ninguna señal, es posible que desee utilizar los valores en caché de la base de datos sqlite. Con una conexión a Internet lenta, es posible que su aplicación no responda, por lo que el almacenamiento en caché puede ser una buena idea, pero no necesariamente en la base de datos sqlite. Debe usar la base de datos sqlite para datos que el dispositivo requiere con frecuencia y que son irrelevantes para su componente de servidor. Si los datos se actualizan con frecuencia pero solo mientras se ejecuta la aplicación, es posible que desee almacenarlos en la memoria de los dispositivos. Supongo que su aplicación no se ejecuta todo el tiempo dentro de las 12 horas, sino que se llama regularmente para verificar algo.

0
> update the UI on regular interval from the sqlite in evry 20 minutes 

No esperes que tu aplicación esté abierta por tanto tiempo.

Para sugieren precisamente a su caso se añadirán

Avoid DB 

Fetch Data at app start or at appropriate time when app is opened 
and save it in plain java objects. 

Define Methods within it that perform operation in it. 

Make map or list to save those POJO 

Define Seprate Controller Classes within your project to update map of pojo at any  
specific change to make fresh data available to UI. 
+0

Recuperar datos al inicio de la aplicación o en el momento apropiado cuando se abre la aplicación y guárdalo en objetos Java simples. >>>>>>>>> ¿Será bueno crear/organizar datos para datos 40X40 en objetos simples de Java? , sí, se puede mapear a través de una lista o dictinary. – Raulp

+0

Crea subclases y usa DataStructure Within. Todo se puede enmarcar a través de OOPS, incluso si es 80X80 – Javanator

Cuestiones relacionadas