GlideModule过时使用AppGlideModule

这里写自定义目录标题

GlideModule过时使用AppGlideModule

在自定义GldieModule时,使用GlideModule提示过时了,

* @deprecated Libraries should use {@link LibraryGlideModule} and Applications should use
 * {@link AppGlideModule}.

那我们就使用AppGlideModule,去网上搜一下怎么配置的
按照这个来配置

运行发现报了下面的错。注意:下面所有的xxx是为了屏蔽包名

    Caused by: java.lang.RuntimeException: Expected instanceof GlideModule, but found: com.xxx.utils.MyGlideModule@e74f701
        at com.bumptech.glide.module.ManifestParser.parseModule(ManifestParser.java:87)
        at com.bumptech.glide.module.ManifestParser.parse(ManifestParser.java:47)
        at com.bumptech.glide.Glide.initializeGlide(Glide.java:232)
        at com.bumptech.glide.Glide.initializeGlide(Glide.java:223)
        at com.bumptech.glide.Glide.checkAndInitializeGlide(Glide.java:184)
        at com.bumptech.glide.Glide.get(Glide.java:168)
        at com.bumptech.glide.Glide.getRetriever(Glide.java:689)
        at com.bumptech.glide.Glide.with(Glide.java:716)
        at com.xxxx.guide.WelcomeActivity.initView(WelcomeActivity.java:116)
        at com.xxxx.WelcomeActivity.onCreate(WelcomeActivity.java:102)

去网上搜了一下,说开了混淆引起的,我这里没开混淆肯定不是这个原因。
不知道怎么想的,随便改了一下,把manifest中,GlideModule改成AppGlideModule就好了;

MyGlideModule继承AppGlideModule ,自然manifest中要用AppGlideModule,这样应该解释的通吧。哈哈

<meta-data
            android:name="com.xxx.utils.MyGlideModule"
            android:value="GlideModule"/>

变成下面这样

<meta-data
            android:name="com.xx.utils.MyGlideModule"
            android:value="AppGlideModule"/>

最后附上MyGlideModule代码

public class MyGlideModule extends AppGlideModule {

    @Override
    public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
        super.applyOptions(context, builder);
        //省略代码.......
    }

    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,Glide 的 `downloadOnly()` 方法已经被标记为过时。如果要下载图片而不显示它,可以使用 `download()` 方法。`download()` 方法与 `downloadOnly()` 方法的区别在于,前者会在下载完成后将图片保存到磁盘缓存中,而后者不会。 下面是使用 Glide 下载图片的示例代码: ```java Glide.with(context) .load(imageUrl) .download(new SimpleTarget<File>() { @Override public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) { // 下载完成,resource 为保存在磁盘缓存中的文件 } }); ``` 在这个示例中,我们通过 `load()` 方法加载图片,并通过 `download()` 方法下载并保存图片。`download()` 方法的参数是一个 `SimpleTarget<File>` 对象,用于在下载完成后回调,`onResourceReady()` 方法中的 `resource` 参数即为保存在磁盘缓存中的文件。 需要注意的是,如果要使用 `download()` 方法下载图片,必须在 AndroidManifest.xml 文件中声明写入外部存储的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` ### 回答2: Glide的downloadOnly()方法是用来在后台下载图片,并且不会将图片直接加载到ImageView上。然而,由于一些更新和改进,该方法已经被标记为过时。在最新版本的Glide中,使用downloadOnly()方法并不推荐,应该尽量避免使用它。 过时的原因可能是因为下载图片时,Glide提供了更多的选择和更好的性能。例如,Glide已经引入了RequestOptions类,它提供了更多的选项去控制图片下载的行为和结果。可以通过在RequestOptions中设置diskCacheStrategy()方法来指定磁盘缓存策略,这样可以更好地管理已下载的图片缓存。 另外,Glide中的新方法也提供了更好的错误处理机制。过时的downloadOnly()方法无法提供可靠的错误处理,而新的方法可以更好地处理加载过程中的异常和错误情况。 因此,建议使用新的方法来替代过时的downloadOnly()。例如,可以使用Glide的asFile()方法来直接下载图片文件,并使用diskCacheStrategy()来设置缓存策略。或者也可以使用Glide的preload()方法来预加载图片,为后续的加载操作做准备。 总之,尽量避免使用过时的downloadOnly()方法,而是使用新的方法来更好地管理和处理图片下载过程中的各种情况。 ### 回答3: Glide的downloadOnly方法是用于仅下载图片而不显示的方法,它已经被标记为过时。原因是在实际使用中发现,仅下载图片而不显示可能会导致一些问题。 首先,通过downloadOnly方法下载的图片将不会被缓存。这意味着每次你需要显示这个图片时,都需要重新下载。这不仅会消耗网络流量,还会延长图片加载的时间,并且在网络不稳定的情况下,可能导致图片无法加载成功。 其次,downloadOnly方法没有提供任何回调接口,无法处理下载过程中的异常情况。如果在下载过程中出现网络错误或其他问题,我们将无法得知并进行相应处理。 另外,Glide还提供了一种更加灵活的方式来实现图片下载和加载的功能,即使用into方法。通过into方法,我们可以指定一个用于显示图片的目标View,并在加载完成后得到相应的回调,从而可以更好地处理加载过程中的各种情况。 总结来说,Glide的downloadOnly方法被标记为过时是因为它无法处理缓存以及异常情况,并且有更加灵活的替代方案可供选择。因此,在实际使用中,建议使用更为有效和可靠的方式来进行图片下载和加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值