【问题标题】:Android - Loading multiple text files into a RecyclerViewAndroid - 将多个文本文件加载到 RecyclerView
【发布时间】:2015-09-06 01:01:18
【问题描述】:

我正在为 Android 编写一个笔记应用程序,我有一个 RecyclerView 来显示所有笔记的网格。每个笔记都有一个名为 Note 的类。

笔记类知道/拥有:

  • 文件名(注释标题)
  • 便笺的文件路径
  • 一种读取并返回文件内文本的加载方法

recyclerview 从 Note 的 ArrayList 中读取。该列表由应用程序的便笺目录中的文件扫描填充,并为每个文件创建一个便笺对象。我正在尝试找到将文本加载到 recyclerview 中的最佳方法,它显示注释的预览。我想知道是否有最好的方法,或者最不愚蠢的方法来做到这一点。我能想到的方法是:

  • 在初始扫描期间一次加载每个便笺的内容,并将其作为字符串保存在 RAM 中的便笺类中,缺点是 RAM 使用率非常高,带有大量便笺和文本。
  • 在 Recylerview 的 onBindViewHolder 方法中加载注释的文本,但我担心如果用户滚动注释的速度非常快,并且在加载文本之前 ViewHolder 及其注释未绑定,那么我担心可能是这里的问题。
  • 将每个笔记的文本加载到线程池中,提高性能,但问题与上述相同。

是否有最好的方法来执行此操作,或者有推荐/标准的方法来处理大量动态加载到 recyclerview 中的文件?

【问题讨论】:

    标签: android performance file io android-recyclerview


    【解决方案1】:

    从第一个开始,然后根据需要进行优化。如果它们只是文本文件,它们可能不会占用太多内存。如果您发现它们确实占用了太多内存或加载时间太长,您可以查看解决该问题的策略,但不要在发现问题之前浪费时间优化某些东西

    【讨论】:

    • 有一些较旧的 Android 设备,或只有 100-200mb 空闲内存的预算设备,因此我在这里担心。
    【解决方案2】:

    你是如何解决这个问题的?

    我也在做同样的应用程序,我的东西最好的选择是异步方式中的第二个(在 bindViewHolder 上加载文件内容)(例如,使用 asynctask),它与 Picasso 等图像加载器的基本理念相同或 Glide,您在 Bind ViewHolder 上调用它们。

    如果性能不佳,您可以将异步调用与缓存策略一起包装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2017-02-20
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多