我正在为Android编写一个笔记应用程序,我有一个RecyclerView来显示所有笔记的网格。每个音符都有一个名为"音符"的类。
注释类知道/拥有:
- 文件名(Notes标题)
- 注释的文件路径
- 读取并返回文件内部文本的加载方法
recyclereview读取的是"注释的排列列表"。该列表由应用程序注释目录中的文件扫描填充,并为每个文件创建一个注释对象。我正试图找到将文本加载到recyclerview的最佳方式,该视图显示笔记的预览。我想知道是否有最好的方法,或者最不愚蠢的方法来做到这一点。我能想到的方法是:
- 在初始扫描期间,一次加载每个笔记的内容,并将其保存为RAM中笔记类中的字符串,缺点是RAM使用率很高,有很多笔记和文本
- 在Recylerview的onBindViewHolder方法中加载注释的文本,但我担心,如果用户快速滚动注释,并且ViewHolder及其注释在加载文本之前已解除绑定,则此处可能存在问题
- 将每个注释的文本加载到线程池中,可以提高性能,但问题与上述相同
有没有最好的方法来做到这一点,或者有一种推荐/标准的方法来处理动态加载到回收视图中的大量文件?
从第一个开始,然后根据需要进行优化。如果它们只是文本文件,可能不会占用太多内存。如果你发现它们确实占用了太多内存或加载时间太长,你可以考虑解决这个问题的策略,但不要在你知道问题之前浪费时间优化。
你是如何解决这个问题的?
我也在做同样类型的应用程序,我认为最好的选择是第二个(在bindViewHolder上加载文件内容)在异步管理器中(例如,使用asynctask),它与Picasso或Glide等图像加载程序的基本思想相同,你可以在bindViewHolder中调用它们。
如果性能不好,可以将异步调用与缓存策略一起封装。