gpt4 book ai didi

java - Android - 在本地存储 'large' 数据

转载 作者:搜寻专家 更新时间:2023-11-01 09:36:43 25 4
gpt4 key购买 nike

长话短说如果需要,是否有一种方法可以高效地存储至少 23,000 条应用启动数据记录,以便用户能够在离线模式下完成此数据的表单选择?

简介

我目前正在实现一项 Activity ,用户可以在其中从国家/州列表中选择一个位置,如果他们需要的位置不存在,他们将能够添加一个位置。

位置的选择可以有多种方式:

  • 用户可以使用 SearchView 搜索位置在ActionBar然后将更新 RecyclerView 中的数据集列表。

  • 或者用户可以先选择一个国家/州(来自 RecyclerView ),然后在另一个 RecyclerView 中选择与该国家/州相对应的城市.

此数据是在应用程序首次启动时从数据库中获取的(但由于他们正在填写 Activity 表格,如果需要,我希望他们能够在首次登录后离线完成)

数据集

所以当前位置DataSet由一个表中的 23,000 条记录组成,列如下:

id | city | country | subcountry | geoID | long | lat | timezone

每次查询23,000条记录非常慢。所以我在想必须有一种更简单的方法来使用关系来加快查询时间。

此时,我已将所有 23,000 条记录存储在 ArrayList<LocationModel> 中与上述所有列的参数。

然后将它们分成 Activity 生命周期所需的不同类别(即国家/州和城市),但这将包括循环遍历原始 ArrayList 中的 23,000 条记录。 ,然后选择所有的国家,然后得到属于那个国家的所有城市,然后将它们存储在一个新的List中。每次用户打开应用程序。 我觉得这对性能来说是不必要的。

我想以一种方式设置数据库,这样查询网络不仅高效,而且只有必要的数据存储在 List 内的设备上。 .


我有哪些选择?

  1. 我想我可以为国家和城市创建两个不同的表,并在城市表中有一个指向国家 ID 的指针。

    我最初可以在应用程序启动时加载所有数据,只加载国家/地区数据,然后当用户选择相应的国家/地区时,它会查询城市类,其中关系列指向正确的 ID。

    但我觉得用户会严重依赖网络连接来完成这种琐碎的任务(在初始应用启动以查询不同城市之后)

  2. 当用户第一次安装应用程序时,我可以从数据库中获取数据并将其存储在 JSON 中文件在应用程序对应的手机内部存储中,但我不确定 APK 是否存在大小因此增加太多。

    是否建议将这种大小的数据存储在 Assets 目录中的文件中,或者这会增加 APK 的大小吗?太多了?

  3. 使用 SQL 在本地存储用户首次在应用程序中安装时的数据库/内容提供程序。同样,这会影响 APK吗?尺寸太大?

所以,我的问题是:

是否有一种方法可以有效地存储应用启动时的城市和国家/地区,以便用户能够在需要时以离线模式完成此数据的选择?

考虑到 APK 大小和三者之间的可比性能,当前的任何选项都是可行的解决方案吗?


更新:决定使用Realm到底。因为它比 SQLlite 快和轻量级的 APK 大小来完成我希望完成的琐碎任务。

最佳答案

使用SQLite来存储数据...

关于java - Android - 在本地存储 'large' 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42551837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com