我正在使用Volley来设置图片网址。我的代码崩溃在:
mrq=Volley.newRequestQueue(this);
Log cat表示豁免在:com.android.volley.toolbox.DiskBasedCache.streamToBytes
如果我注释掉代码,程序就不会崩溃。
我尝试过多次重启手机,因为在我的研究中我发现这个问题已经解决了。
为什么要使用这么多内存创建RequestQueue?
如何防止OutOfMemoryError发生?
我是否需要清空缓存?
感谢您的帮助并花时间阅读本文。
答案 0 :(得分:6)
如何初始化您的RequestQueue?我怀疑您是为每个活动创建RequestQueues。所以在应用程序类中启动它作为
public class ApplicationController extends Application {
private static ApplicationController sInstance;
private RequestQueue mRequestQueue;
@Override
public void onCreate() {
super.onCreate();
// initialize the singleton
sInstance = this;
}
public static synchronized ApplicationController getInstance() {
return sInstance;
}
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;
}
//your code
}
从您的活动中获取getRequest队列
mrq = ApplicationController.getInstance().getRequestQueue();
答案 1 :(得分:2)
一个关键概念是RequestQueue必须使用Application上下文实例化,而不是Activity上下文。这可以确保RequestQueue将持续应用的生命周期,而不是每次重新创建活动时重新创建