我认为我在使用"面向对象" 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队列实例?
答案 0 :(得分:0)
让mRequestQueue
成为静态。
像这样,
public static RequestQueue mRequestQueue;
public static RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
在Java中,如果将变量设为静态,则无论您创建多少个对象,内存中只能存在该变量的一个实例。并且所有对象将共享该单个实例。
详细了解单身人士here。