Встроить базу данных в .apk распределенного приложения [Android] - PullRequest
6 голосов
/ 10 июня 2010

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

Ответы [ 2 ]

13 голосов
/ 10 июня 2010

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

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

Где «initialiseDatabase» - это флаг, указывающий, было ли приложение запущено в первый раз.

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

1 голос
/ 29 июля 2010

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

.
...