Incorpora un database nella .apk di un'applicazione distribuita [Android]
-
26-09-2019 - |
Domanda
La mia domanda è credo abbastanza semplice, ma non credo che la risposta sarà ... Ho un sacco di contenuti di avere nella mia applicazione per farlo funzionare correttamente, e sto pensando di mettere tutto in una banca dati, e distribuirlo in un database embeded con l'applicazione in il mercato. L'unico problema è che non ho idea di come farlo. So che posso estrarre un file db da Eclipse DDMS con il contenuto del mio database, e suppongo che ho bisogno di mettere nella cartella di asset della mia candidatura, ma poi come fare l'uso dell'applicazione è di rigenerare il database dell'applicazione ? Se si dispone di un collegamento ad un codice o di aiuto, che sarebbe grande. Grazie
Soluzione
Bene per ottenere quello che stai chiedendo, si potrebbe mettere il file .db nella vostra attività / directory e copiarlo in posizione la prima volta che si avvia la vostra applicazione .....
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();
}
Dove "initialiseDatabase" è un po 'di flag che indica se l'applicazione è stata lanciata per la prima volta.
Anche se, se siete alla ricerca di memorizzare una grande quantità di dati, come lei ha detto: vi consigliamo caldamente di evitare il gonfiore il file APK con esso, e utilizzare la connessione a Internet per scaricare i record del database (da un server ospitato) dopo la applicazione è stata lanciata. In questo modo è possibile visualizzare una barra di avanzamento che indica all'utente il motivo per cui sono in attesa di un lungo periodo di tempo per iniziare a utilizzare l'applicazione. Rendere l'APK particolarmente grande di solito scoraggia la gente di installare in primo luogo.
Altri suggerimenti
È possibile implementare la soluzione middle-of-the-road: approccio Usa sopra, ma invece di distribuire file di db metterlo su qualche server. Nei miei file fare esperienza è solo il 10% del tempo di elaborazione, resto è parsing e serializzazione immagini per db