如何使用 fromHTML 使 RecyclerView 中的图像 Getter 更高效?
How to make an Image Getter in a RecyclerView using fromHTML more efficient?
我正在使用 fromHTML 将 HTML 文本加载到 RecyclerView 元素内的 TextView 中。这确实有效,但是它非常慢,因为图像是从 URL 加载的,当设置或更新适配器时,应用程序冻结或崩溃,我得到的日志说在 main 上完成了太多工作线。有什么方法可以使我正在使用的 HTML.fromHTML 中的 ImageGetter 更高效,并在更新时使适配器 运行 在单独的线程上运行,这样它就不会冻结应用程序?我试过寻找更快的方法来获取 Drawable,但主要的图像加载库似乎没有办法 return Drawable 对象。
看起来行 Boolean result = fiu.execute().get();
正在阻塞 UI 线程并且正在破坏 AsyncTask 的目的。您应该考虑在 onPostExecute()
中使用回调来设置图像。
遗憾的是,网上没有很多关于如何实现 Html.ImageGetter. I answered a question here 解决在模拟后台线程上加载实际图像时更改占位符图像的信息。问题中提出的解决方案也有效,但需要操作和重新扫描 HTML 文本。
我认为你可以从中改编一些东西 post 来解决你的问题。
更新: 我认为更好的解决方案是使用库,例如 Glide to load the drawable. If the library doesn't handle your use case natively, take a look at how others have handled the limitation. See here for one approach. I think that this Stack Overflow answer 可能对您有用。在 onResourceReady()
中,您可以使用加载的图像设置文本。
第二次更新:我会更多地研究 Glide。您可以创建一个名为“ModelLoader”的自定义加载器,它可以获取您的流可绘制对象。有关示例,请参见 here regarding how to write a ModelLoader and 。 (不知道该示例是否有效,但看起来不错。)
我正在使用 fromHTML 将 HTML 文本加载到 RecyclerView 元素内的 TextView 中。这确实有效,但是它非常慢,因为图像是从 URL 加载的,当设置或更新适配器时,应用程序冻结或崩溃,我得到的日志说在 main 上完成了太多工作线。有什么方法可以使我正在使用的 HTML.fromHTML 中的 ImageGetter 更高效,并在更新时使适配器 运行 在单独的线程上运行,这样它就不会冻结应用程序?我试过寻找更快的方法来获取 Drawable,但主要的图像加载库似乎没有办法 return Drawable 对象。
看起来行 Boolean result = fiu.execute().get();
正在阻塞 UI 线程并且正在破坏 AsyncTask 的目的。您应该考虑在 onPostExecute()
中使用回调来设置图像。
遗憾的是,网上没有很多关于如何实现 Html.ImageGetter. I answered a question here 解决在模拟后台线程上加载实际图像时更改占位符图像的信息。问题中提出的解决方案也有效,但需要操作和重新扫描 HTML 文本。
我认为你可以从中改编一些东西 post 来解决你的问题。
更新: 我认为更好的解决方案是使用库,例如 Glide to load the drawable. If the library doesn't handle your use case natively, take a look at how others have handled the limitation. See here for one approach. I think that this Stack Overflow answer 可能对您有用。在 onResourceReady()
中,您可以使用加载的图像设置文本。
第二次更新:我会更多地研究 Glide。您可以创建一个名为“ModelLoader”的自定义加载器,它可以获取您的流可绘制对象。有关示例,请参见 here regarding how to write a ModelLoader and