【问题标题】:Importing data at initial start of application in Android?在Android中的应用程序初始启动时导入数据?
【发布时间】:2012-08-20 03:52:07
【问题描述】:

我需要一些文本数据(200 万城镇的街道名称)才能进入我的 Android 应用程序。我认为最好的方法是在第一次启动时将其存储到只读的 sqlite 数据库中。正如我所读到的,使用预定义的数据库执行此操作非常乏味且不干净,但是您必须从外部存储或其他东西复制它,然后再获得两次数据。所以我考虑使用原始资源中的CSV文件并在导入后将其删除,但这也是不可能的,因为这些数据将内置到sdk文件中,无法再删除。

我的目标是从本地进行某种初始数据传输并删除此数据源。任何想法如何正确地实现这一目标?我不想从服务器下载数据,因为这意味着我的应用程序需要互联网连接的唯一原因是下载初始数据。否则它不需要互联网连接。

【问题讨论】:

    标签: android import-from-csv


    【解决方案1】:

    将 .csv 文件放入您的资产文件夹并阅读它怎么样。

           String next[] = {};
            List<String[]> list = new ArrayList<String[]>();
    
    
    
       try {
            CSVReader reader = new CSVReader(new InputStreamReader(getAssets().open("test.csv")));
            for(;;) {
                next = reader.readNext();
                if(next != null) {
                    list.add(next);
                } else {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    

    【讨论】:

    • 但这与数据库的问题相同。然后,当您将数据导入 Android 设备上的本地数据库时,您将获得两次数据。而且一遍又一遍地读取数据而不是持久化它会非常慢,因为我需要在应用程序中多次查询它。
    【解决方案2】:

    我想我会压缩初始安装资源中的数据并在安装时扩展它。这个答案参考了一个 7zip 开源 java api。

    Data compression on Android (other than java.util.zip ?)

    【讨论】:

    • 听起来很有趣,但“初始安装资源”到底是什么意思?
    • 我只是说存档将是初始安装的一部分。作为项目中作为资源包含的文件。您可以将其放在 assets 文件夹中并使用 getAssets().open(filename)
    • 我假设您将在安装时从存档创建一个数据库。
    • 是的,这就是计划。但是当我使用资产时,我遇到了与应用程序附带的 csv 或预建数据库相同的问题。导入生成的数据库时无法删除,所以我把所有的数据都存了两次。显然,除了使用与服务器的连接之外别无他法,因为 apk 始终是只读的。另一种解决方案可能是将数据存储在 TreeSet 中,因为数据必须是只读的。我会考虑的。
    【解决方案3】:

    同时,我知道我将在我的应用程序中使用的数据过于复杂,无法手动填充数据。此外,该应用程序无论如何都需要互联网访问,所以我将使用 Json 字符串来获取数据。

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 1970-01-01
      • 2011-08-17
      • 2022-01-24
      • 2017-04-20
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 2011-11-17
      相关资源
      最近更新 更多