如果我在 Android 应用程序中作为第三方库运行,并且我想检查屏幕上的图像视图是从本地捆绑资源加载还是从远程 uri 加载 - 有没有办法在运行时执行此操作?视图树中是否有一些线索可以帮助我将图像视图分为这两个大类?我发现 uri 字段本身并没有通过反射提供任何有用的东西。我可以要求开发人员标记图像视图,但这会给他们带来巨大的开销,我宁愿避免。
不。 ImageViews 包含 Drawables。该视图不知道该可绘制对象来自哪里。它甚至不知道它是什么类型的 Drawable。
此外,使用 setImageUri 显示远程图像通常是一种代码味道 - 这会导致它在 UI 线程上请求和解码,这可能是导致性能问题的原因。您永远不应该这样做,并使用外部图像缓存来下载图像并正确线程化事物。有一些大型图像库可以为您做到这一点(Glide 和 Picasso 是两大)