【问题标题】:Android Best Practices for Local Files本地文件的 Android 最佳实践
【发布时间】:2017-03-01 08:00:44
【问题描述】:

我目前正在编写一个应用程序,它显示ListView 中的项目,然后用户可以添加或删除这些项目。我通过写出到本地JSON 文件使这些数据持久化(我将数据保存为JSONArray,然后在Serializing 之前调用toString() 方法并写入它,读取基本相同过程相反)。

由于我对 Android 开发还很陌生,所以我对最佳实践不是很清楚,特别是我对访问存储在本地文件和资源文件中的数据的最佳方法很感兴趣。目前,我正在使用AsyncTaskLoader 从这些文件中读取和写入,我想知道这对于本地文件是否明智,或者对于本地文件是否不需要/不推荐。是否可以在主线程上运行以访问本地文件,或者除了AsyncTaskLoader之外还有其他类我可以使用吗?

我的主要问题是,在实现 AsyncTaskLoader 之后,我看到了一些性能问题,并且对整个开发来说还很陌生,我怀疑我没有以有效的方式实现这个相当复杂的类。如果我可以一起避免这一切或替换一个不太复杂的类来达到类似的结果,我想我会被设置。提前感谢您的反馈,如果有一些代码 sn-ps 有助于澄清问题,请告诉我。

【问题讨论】:

  • 你想轻松存储json数据;
  • 或者你想要来自 url 的 json 数据
  • 第一个@android_jain,我希望从本地源(而不是通过互联网)存储和检索数据,我决定使用 JSON,因为它是一种非常通用且易于使用的方法。
  • 在 sqllite 中存储数据,或者如果您想改进您的应用,请使用 relm 数据库
  • 如果您有键值之类的数据,请使用共享首选项

标签: java android performance file asynctaskloader


【解决方案1】:

经过一番搜索并尝试了一些不同的方法后,我发现实现 SQLLight 数据库和游标加载器比尝试将字符串序列化和反序列化为 JSON 快得多,反之亦然。此外,当一切都设置好后,实施起来要容易得多。

这个项目是一个很好的例子,说明了如何实现这个https://github.com/udacity/ud845-Pets

【讨论】:

    【解决方案2】:

    如果您的数据文件太大而无法读写,那么您需要使用一些ThreadAsyncTaskAsyncTask 主要有 android UI 的三种连击表现方法。

    为了存储数据,您可以将 json 字符串存储到 SharedPreferences 中。

    查看下面的链接

    AsyncTask

    还有

    SharedPreferences

    【讨论】:

    • AsyncTask has mainly three methods for batter performance with android UI。没有。
    • 有更好的性能 volly 或改造或任何其他工具
    • 目前我拥有的数据并不是特别大,我怀疑即使完成后它们会变得比几 MB 大得多。存储/检索数据的方法是否会因文件大小而显着变化?
    • @MarcinOrlowski 那么为什么 Android 有 AsyncTask 和它的三种方法来处理任何大的操作。
    • @android_jain 为什么我们使用 Volly 或 Retrofit 进行非网络操作。
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 2015-12-10
    • 2011-04-07
    • 1970-01-01
    • 2011-02-16
    • 2010-12-17
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多