Android 设置截击图像加载器的优先级

Android 设置截击图像加载器的优先级,android,android-volley,Android,Android Volley,我用谷歌截击库创建了一个图像加载器。我的问题是,我不知道如何设置每个请求的优先级。有人能帮我吗?下面显示的是代码。我应该在哪里设置优先级 Main Activity public class MainActivity extends ActionBarActivity { ListView list; ImageLoader mImageLoader; ImageAdapter imageAdapter; @Override protected void onCreate(Bundle

我用谷歌截击库创建了一个图像加载器。我的问题是,我不知道如何设置每个请求的优先级。有人能帮我吗?下面显示的是代码。我应该在哪里设置优先级

 Main Activity

public class MainActivity extends ActionBarActivity {

ListView list;
ImageLoader mImageLoader;
ImageAdapter imageAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    list = (ListView) findViewById(R.id.list);

    mImageLoader = MyVolley.getInstance(this).getImageLoader();
    imageAdapter = new ImageAdapter(this, mImageLoader);

    list.setAdapter(imageAdapter);

}
}

}

MyVolley类
公开课截击{
私有静态MyVolley mVolleyInstance;
私有请求队列mRequestQueue;
私有图像加载器;
私有静态上下文mContext;
私人MyVolley(上下文){
mContext=上下文;
mRequestQueue=getRequestQueue();
mImageLoader=新的图像加载器(mRequestQueue,
新建ImageLoader.ImageCache(){
专用最终LruCache缓存=新LruCache(
ImageLinkArray.imageUrl.length);
@凌驾
公共位图(字符串url、位图){
//TODO自动生成的方法存根
cache.put(url、位图);
}
@凌驾
公共位图getBitmap(字符串url){
//TODO自动生成的方法存根
返回cache.get(url);
}
});
}
公共静态同步MyVolley getInstance(上下文){
if(mVolleyInstance==null){
mVolleyInstance=新的MyVolley(上下文);
}
返回mVolleyInstance;
}
公共请求队列getRequestQueue(){
if(mRequestQueue==null){
//使用应用程序上下文
mRequestQueue=Volley.newRequestQueue(mContext
.getApplicationContext());
}
返回mrequest队列;
}
公共无效addToRequestQueue(请求请求){
getRequestQueue().add(请求);
}
公共ImageLoader getImageLoader(){
返回图像加载器;
}
}

试试这段代码

private Priority priority = Priority.HIGH;

StringRequest strReq = new StringRequest(Method.GET, Const.URL_STRING_REQ,
        new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, response.toString());
                msgResponse.setText(response.toString());
                hideProgressDialog();

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {
    @Override
    public Priority getPriority() {
        return priority;
    }

};

public void addToRequestQueue(请求请求请求){
要求设置标签(标签);
com.android.volley.Request.Priority pr=req.getPriority();
pr=com.android.volley.Request.Priority.HIGH;
getRequestQueue().add(请求);
}
并通过使用一些额外参数调用该方法使其可行。它是由Google开发者为图像加载而创建的,您只需扩展它并实现setPriority()

优先级
是来自
请求
类的枚举

每个请求都有从请求类继承的
getPriority()
方法。此方法在Volley
RequestQueue
中用于确定此队列中的请求优先级


要使用此方法,您的请求只需覆盖getPriority(),并且必须在请求内部实现
setPriority()
方法,如上所示。

检查此问题。它可能会帮助你。。。这是用于字符串请求的,对吗??如果您查看ImageRequest()的源代码,您会发现“默认”优先级较低。创建您自己的“ImageRequest”类(复制和粘贴),但将优先级设置为高…是否有针对不同请求设置不同优先级的规定?我猜您可以将其添加为构造函数的一部分?这是针对字符串请求的,对吗??我正在使用一个图像请求,实际上请求是请求列表,对吗?我如何将某个特定的请求设置为高?按照您自己的方式进行设置。我看到
Respose
通过
AppController.getInstance().addToRequestQueue(movieReq)添加到队列中
as
JsonArrayRequest
将其作为我之前说过的
StringRequest
并将其用于
movie.setThumbnailUrl(StringResponse)现在通过我的第一个回答设置
优先级更容易了
,但它的图像我正在处理OK我创建了一个优先级类和扩展的imagerequest,并对下面的一个进行了编码。很好…但是如何设置每个请求的优先级呢?你不必创建Piority类,它已经在凌空中设计和使用了。每个请求都从请求类继承了getPriority()。您只需通过重写来使用它,并为您的请求实现setPriority()。RequestQueue将通过调用getPriority()读取此优先级。那么我应该在我的singleton类中实现上述代码吗??只要上面的代码就可以了??上面的代码必须是请求类的一部分。它向您展示了如何使用具有请求优先级的类变量实现setRequest()。getPriority()将由Volley自己来为您完成此计划。实际上,我对此非常生气:(.我会发布代码,告诉我在哪里插入此??
      MyVolley class


       public class MyVolley {

private static MyVolley mVolleyInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mContext;

private MyVolley(Context context) {
    mContext = context;
    mRequestQueue = getRequestQueue();


    mImageLoader = new ImageLoader(mRequestQueue,
            new ImageLoader.ImageCache() {
                private final LruCache<String, Bitmap> cache = new LruCache<>(
                        ImageLinkArray.imageUrl.length);

                @Override
                public void putBitmap(String url, Bitmap bitmap) {
                    // TODO Auto-generated method stub
                    cache.put(url, bitmap);
                }

                @Override
                public Bitmap getBitmap(String url) {
                    // TODO Auto-generated method stub
                    return cache.get(url);

                }
            });

}

public static synchronized MyVolley getInstance(Context context) {
    if (mVolleyInstance == null) {
        mVolleyInstance = new MyVolley(context);
    }
    return mVolleyInstance;
}

public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        // use the application context
        mRequestQueue = Volley.newRequestQueue(mContext
                .getApplicationContext());
    }
    return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req) {

    getRequestQueue().add(req);

}

public ImageLoader getImageLoader() {
    return mImageLoader;
}
private Priority priority = Priority.HIGH;

StringRequest strReq = new StringRequest(Method.GET, Const.URL_STRING_REQ,
        new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, response.toString());
                msgResponse.setText(response.toString());
                hideProgressDialog();

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {
    @Override
    public Priority getPriority() {
        return priority;
    }

};
public <T> void addToRequestQueue(Request<T> req) {
    req.setTag(TAG);
    getRequestQueue().add(req);
}
public <T> void addToRequestQueue(Request<T> req) {
    req.setTag(TAG);
    com.android.volley.Request.Priority pr = req.getPriority();
    pr = com.android.volley.Request.Priority.HIGH;
    getRequestQueue().add(req);
}
// default priority
private Priority mPriority = Priority.LOW;

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

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