设置请求优先级 Volley

13

我正在尝试使用Android中的Volley库设置我的请求优先级,但我无法找到如何设置请求优先级的方法。

StringRequest request = new StringRequest(Request.Method.GET,"feed URL",volleyListener, volleyErrorListener);
pe.requestQueue.add(request);

你有任何想法如何做到这一点吗?

3个回答

15

很遗憾,这个库还没有完全发展起来。要为一个请求设置优先级,您需要扩展该请求并覆盖getPriority()函数。对于您的示例,我会创建一个新的类,该类扩展了StringRequest并实现了getPriority()函数(可能还会有setPriority()函数,以便您可以在不同的请求中通过编程方式更改优先级)。

private Priority mPriority = Priority.LOW;

@Override
public Priority getPriority() {
    return mPriority;
}

public void setPriority(Priority priority) {
    mPriority = priority;
}

Priority 是来自 Request 类的一个枚举类型。


1
原来imagerequest已经设置了Priority.LOW,但你的答案有效。谢谢。 - TwistedEquations
是的,ImageRequest已经有了,但StringRequest没有,而且Request类也没有提供手动设置它的方法。Volley已经很好用了,但如果你想将其定制为自己的用途,则仍需要使用自定义类。 - Flynn81
Volley支持四个优先级别 - 低、普通、高和立即。 - v01d

11
这里有一个快速设置优先级的方法,
    StringRequest request = new StringRequest(Request.Method.GET,"feed URL",volleyListener, volleyErrorListener) {
        @Override
        public Priority getPriority() {
            return Priority.IMMEDIATE;
        }
    };

谢谢,这是一种更好的方法来完成像改变优先级这样简单的事情。 - LNI
这会设置优先级吗?我有点困惑,你能解释一下吗? - Anandhu

0

使用 Kotlin:

val stringRequest = object : StringRequest( Request.Method.GET, url, 
    { response -> Log.i("Response", response) }, 
    { error -> Log.i("Error", error) } ) 
    { override fun getPriority(): Priority { return Priority.HIGH } }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接