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

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

6
задан starblue 10 June 2010 в 19:31
поделиться

2 ответа

Чтобы добиться того, о чем вы просите, вы можете поместить файл .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-файл стал особенно большим, люди в первую очередь не хотят его устанавливать.

13
ответ дан 8 December 2019 в 17:18
поделиться

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

1
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: