Mi pregunta es bastante simple, pero no creo que la respuesta sea ... Tengo bastante contenido para tener en mi aplicación para hacer que funcione correctamente, y estoy pensando en poner todo en una base de datos, y distribuirlo en una base de datos incrustada con la aplicación en el mercado. El único problema es que no tengo idea de cómo hacerlo. Sé que puedo extraer un archivo .db de Eclipse DDMS con el contenido de mi base de datos, y supongo que tengo que ponerlo en la carpeta de activos de mi aplicación, pero luego cómo hacer que la aplicación lo use para regenerar la aplicación ¿base de datos? Si tiene algún enlace a algún código o ayuda, sería genial. Gracias Incruste una base de datos en el .apk de una aplicación distribuida [Android]
Respuesta
bien para lograr lo que preguntas, se puede poner el archivo .db en su activos/directorio y copiarlo en su lugar la primera vez que inicie su aplicación .....
final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db";
// Check if the database exists before copying
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {
// Open the .db file in your assets directory
InputStream is = getContext().getAssets().open("MyDatabaseFile.db");
// Copy the database into the destination
OutputStream os = new FileOutputStream(DB_DESTINATION);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0){
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
}
Donde "initialiseDatabase" es una bandera que indica si la aplicación se ha lanzado por primera vez.
Aunque, si está buscando almacenar una gran cantidad de datos, como mencionó: le recomiendo evitar que hinche el archivo APK con él, y use la conexión a Internet para descargar los registros de la base de datos (desde un servidor alojado) después la aplicación ha sido lanzada De esta forma, puede mostrar una barra de progreso que le indica al usuario por qué están esperando mucho tiempo para comenzar a usar la aplicación. Hacer el APK especialmente grande por lo general disuade a las personas de instalarlo en primer lugar.
Puede implementar una solución a mitad de camino: utilice el enfoque anterior, pero en lugar de distribuir el archivo db, colóquelo en el servidor en alguna parte. En mi experiencia, obtener archivos es solo el 10% del tiempo de procesamiento, el resto es analizar y serializar imágenes a db
En realidad, mi propósito era evitar ponerlo en un servidor y forzar una descarga directamente después de la instalación de la aplicación ... – Sephy
Entiendo. Lo estaba considerando para mi aplicación, pero luego miré el tamaño db y es otro + 350K. La gente se puso muy sensible al respecto, sin embargo, si tienes una conexión decente, definitivamente será más rápido que la descarga gradual con el procesamiento posterior – Bostone
- 1. ¿Es posible que mysql cree una base de datos distribuida?
- 2. Spring Security en una aplicación distribuida
- 3. Android, dos aplicaciones, una base de datos?
- 4. bases de datos Mantener sincronizados distribuida en una red inestable
- 5. Comprobando si existe una columna en una base de datos de aplicación en Android
- 6. ¿Cómo construir una aplicación java distribuida?
- 7. ¿Qué es una "transacción distribuida"?
- 8. ¿Múltiple aplicación usando una base de datos?
- 9. Android - ¿Existe una base de datos SQLite?
- 10. Incruste el visor de Powerpoint en una página web (PHP)
- 11. Tratar con una gran base de datos en Android
- 12. Administrar sesión dentro de la aplicación distribuida
- 13. Elegir una solución de memoria compartida distribuida
- 14. Obtener el APK de la aplicación instalada
- 15. Cómo desinstalar Android apk sin perder datos?
- 16. ¿Tamaño máximo de la base de datos SQLite en la memoria de una aplicación de Android?
- 17. SQLCipher - Abrir una base de datos cifrada en el escritorio
- 18. Escribiendo una cola distribuida en DynamoDB de Amazon
- 19. Android: ¿enlazar datos de una base de datos a un CheckBox en un ListView?
- 20. Copiar datos de una tabla en una base de datos a otra base de datos separada
- 21. Varias bases de datos en una sola aplicación en Android
- 22. Sincronización de base de datos Access en una Distributed App
- 23. cómo obtener el valor de la base de datos a una matriz de cadenas en Android (base de datos SQLite)
- 24. Agregar una base de datos/backend a aplicaciones de Android
- 25. Base de datos por aplicación VS Una gran base de datos para todas las aplicaciones
- 26. Crear base de datos SQLite en android
- 27. Almacenar datos en el almacén de datos de App Engine desde una aplicación de Android
- 28. Cómo guardar datos en una aplicación de Android
- 29. ¿Puedo acelerar las solicitudes realizadas por una aplicación distribuida?
- 30. Android JNI APK Embalaje
Bueno, antes estaba usando una barra de progreso, pero como estoy descargando muchas imágenes y analizando varios XML , toma bastante tiempo, especialmente cuando usa la red 3G en lugar de wifi – Sephy
¿no sería más fácil simplemente verificar si la base de datos ya existe en lugar de usar el booleano? ¿Cómo puedo realizar un seguimiento del booleano cuando se cierra la aplicación? entrada en el DB? – Sephy
Eso es exactamente lo que representa el booleano, lo dejé como un ejercicio de implementación. He actualizado el código de ejemplo con la forma en que puede hacerlo. – seanhodges