如何在android apk文件中存储初始数据?

时间:2016-10-28 08:20:27

标签: android

我正在编写一个Android天气应用,需要一个城市信息列表。

列表很长,花了很长时间才能从互联网上下载。

所以我想将它保存在我的.apk文件中,并在没有互联网连接的情况下加载它,但不知道如何。

我试图将它保存在java类中,但它太庞大并且需要大量内存。

有什么方法可以解决吗?谢谢!

3 个答案:

答案 0 :(得分:2)

你看过res / assets吗?

我假设您可能有某种类型的json / xml数据,如果是这样,您希望预先打包应用程序,然后将json / xml加载到res / assets中,它只是一个文件包含在你的apk中。

参考

https://developer.android.com/guide/topics/resources/accessing-resources.html

答案 1 :(得分:1)

您可以将其存储在 SQLite数据库中,或使用纯文本,然后将其保存在应用项目的原始资源或资源资源中。

对于SQLite,请尝试Android SQLiteAssetHelper,它将帮助您存储来自预定义数据库的数据。

这里摘自其自述文件:

  

用于管理数据库创建和版本的Android帮助程序类   管理使用应用程序的原始资产文件。

     

此类为开发人员提供了一种发布Android的简单方法   具有现有SQLite数据库的应用程序(可以预先填充   数据)并管理其初始创建和所需的任何升级   随后的版本发布。

     

它是作为SQLiteOpenHelper的扩展实现的,提供了一个   ContentProvider实现推迟开放的有效方法   升级数据库直到第一次使用。

     

而不是实现onCreate()和onUpgrade()方法   执行一堆SQL语句,开发人员只需包含   在项目的资产目录中适当命名的文件资产。   这些将包括用于创建的初始SQLite数据库文件   可选地任何SQL升级脚本。

答案 2 :(得分:0)

您可以使用xml资源中的arrays。例如

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="cities">
        <item>New York</item>
        <item>London</item>
        <item>Moscow</item>
        ....
    </string-array>
</resources>