Встроить базу данных в .apk из распределенного приложения [Android

StackOverflow https://stackoverflow.com/questions/3013021

Вопрос

Мой вопрос в том, что я думаю, что довольно просто, но я не думаю, что ответ будет ... У меня довольно много контента, чтобы иметь в моем заявлении, чтобы заставить его работать должным образом, и я думаю о том, чтобы положить все это в база данных и Распределить его в встраиваемой базе данных с приложением на рынке. Единственная проблема в том, что я понятия не имею о том, как это сделать. Я знаю, что я могу извлечь файл .db из Eclipse DDMS с содержанием моей базы данных, и я должен полагаться, что мне нужно поместить его в папку активов моего приложения, но затем, как сделать приложение использовать его для восстановления базы данных приложения ? Если у вас есть ссылка на какой-код или помощь, это было бы здорово. Спасибо

Это было полезно?

Решение

Ну, чтобы добиться того, что вы спрашиваете, вы можете поставить файл .db в своих активах / каталоге и скопировать его на место впервые, когда вы начнете приложение .....

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();
}

Где «инициализированнаяabase» является некоторым флагом, указывающим, если приложение было запущено в первый раз.

Хотя, если вы смотрите на хранение много данных, как вы упомянули: я настоятельно рекомендую вам избежать вздутий файла APK и использовать подключение к Интернету для загрузки записей базы данных (с размещенного сервера) после того, как приложение было запущен. Таким образом, вы можете показать панель прогресса, указывающий пользователю, почему они долго ждут, чтобы начать использовать приложение. Создание APK особенно большим, обычно удерживает людей от установки его в первую очередь.

Другие советы

Вы можете реализовать середину дорожного решения: использовать подход выше, но вместо того, чтобы распределить файл БД, поместите его на сервере где-то. По моему опыту получение файлов составляет всего 10% от времени обработки, остальная часть его анализа и сериализация изображений в БД

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top