Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Glide从Firebase下载图像-如何实现超时?_Java_Android_Firebase_Firebase Storage_Android Glide - Fatal编程技术网

Java 使用Glide从Firebase下载图像-如何实现超时?

Java 使用Glide从Firebase下载图像-如何实现超时?,java,android,firebase,firebase-storage,android-glide,Java,Android,Firebase,Firebase Storage,Android Glide,我正在成功地使用Glide从Firebase下载图像 我有我的标准模块: @GlideModule public class MyGlideModule extends AppGlideModule { @Override public void registerComponents(Context context, Glide glide, Registry registry) { // Register FirebaseImageLoader to hand

我正在成功地使用Glide从Firebase下载图像

我有我的标准模块:

@GlideModule
public class MyGlideModule extends AppGlideModule {

    @Override
    public void registerComponents(Context context, Glide glide, Registry registry) {
        // Register FirebaseImageLoader to handle StorageReference
        registry.append(StorageReference.class, InputStream.class,
                new FirebaseImageLoader.Factory());
    }
}
然后在我的活动中:

GlideApp.with(this /* context */)
        .load(storageReference)
        .diskCacheStrategy(DiskCacheStrategy.NONE)
        .skipMemoryCache(true)
        .fitCenter()
        .error(R.drawable.broken)
        .transition(DrawableTransitionOptions.withCrossFade(2000))
        .listener(new RequestListener<Drawable>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                Log.i("Info","Load failed");
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                Log.i("Info","Load successful");
                return false;
            }
        })
        .into(imageView);
GlideApp.with(此/*context*/)
.load(存储参考)
.diskCacheStrategy(diskCacheStrategy.NONE)
.skipMemoryCache(真)
.fitCenter()
.错误(R.可拉伸.断裂)
.transition(可绘制的TransitionOptions.withCrossFade(2000))
.listener(新的RequestListener(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
Log.i(“信息”,“加载失败”);
返回false;
}
@凌驾
公共布尔onResourceReady(可绘制资源、对象模型、目标、数据源数据源、布尔isFirstResource){
Log.i(“信息”,“加载成功”);
返回false;
}
})
.进入(图像视图);
这通常可以正常工作,但当设备没有internet连接时,imageview将保持空白-不会触发
R.drawable.Breaked
错误图像,也不会触发
onLoadFailed
onResourceReady
。如果信号恢复,则图像会出现


我想检测这种情况,并向用户表明他们需要更好的信号。显而易见的方法是实现超时(因为似乎没有超时)。但是,简单地将
.timeout(3000)
添加到活动部分并不起作用,因为在使用模块时会忽略这一点。我假设答案在
FirebaseImageLoader.Factory()
的设置中,但是我找不到任何文档,而且源代码中也不清楚。

谢谢,我看到了这一点,但在这里不适用,因为他们没有使用FirebaseImageLoader。他们的Factory对象采用队列参数,其中他们编码了超时,而FirebaseImageLoader.Factory不采用任何参数。