如何在整个应用程序中维护请求队列的单个实例

时间:2015-11-28 20:24:09

标签: android android-volley

我认为我在使用"面向对象" of Java

所以这里我有一个名为Volley的列表适配器

public class MyList extends ArrayAdapter<>  {

// ....

VolleyClass vc = new VolleyClass(getContext());
vc.runVolley();

// ...

}

但我不想在列表适配器的每次迭代中实例化另一个请求队列。

所以在VolleyClass中我添加了这个方法

/**
 * @return The Volley Request queue, the queue will be created if it is null
 */
public RequestQueue getRequestQueue() {
    // lazy initialize the request queue, the queue instance will be
    // created when it is accessed for the first time
    if (mRequestQueue == null) {
        mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    }

    return mRequestQueue;
}

但是由于我在列表适配器中创建了VolleyClass的新实例,我仍然总是创建一个Request队列的新实例。

如何使用Java语言在整个应用程序中维护一个Request队列实例?

1 个答案:

答案 0 :(得分:0)

mRequestQueue成为静态。 像这样,

public static RequestQueue mRequestQueue;

public static RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
        mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    }
    return mRequestQueue;
}

在Java中,如果将变量设为静态,则无论您创建多少个对象,内存中只能存在该变量的一个实例。并且所有对象将共享该单个实例。

详细了解单身人士here