【问题标题】:Volley.newRequestQueue is causing OutOfMemoryErrorVolley.newRequestQueue 导致 OutOfMemoryError
【发布时间】:2014-06-03 17:29:14
【问题描述】:

我正在使用 Volley 设置图片网址。我的代码在以下位置崩溃:

mrq=Volley.newRequestQueue(this);

日志猫说豁免在:com.android.volley.toolbox.DiskBasedCache.streamToBytes

如果我将代码注释掉,程序不会崩溃。

我已经尝试过几次重启手机,因为在我的研究中我发现这对一些解决这个问题的人有用。

为什么创建 RequestQueue 会占用这么多内存?

如何防止 OutOfMemoryError 发生?

我需要清空缓存吗?

感谢您的帮助并花时间阅读本文。

【问题讨论】:

  • 您是否正在启动 mrq,即 RequestQueue 处于活动状态?
  • 我是。 private RequestQueue mrq;

标签: android caching out-of-memory android-volley


【解决方案1】:

如何初始化 RequestQueue?我怀疑你正在为每个活动创建 RequestQueues。所以在你的 Application 类中启动它

    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


    }

从您的活动中获取请求队列为

mrq = ApplicationController.getInstance().getRequestQueue();

【讨论】:

  • 您的怀疑是正确的。我可以看到这可能会导致问题。我已经实现了您建议的功能,并且遇到了同样的异常。
  • 请清除缓存并重新运行应用程序或者只是尝试重新安装应用程序并且您是否将请求添加到队列为 mrq.add(req);
  • @user3594241 你是在用 ImageLoader 设置图片吗
  • 是的,我正在使用 ImageLoader。
  • @lock 乐于助人。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受
【解决方案2】:

一个关键概念是 RequestQueue 必须使用 Application 上下文进行实例化,而不是 Activity 上下文。这确保了 RequestQueue 将在您的应用程序的整个生命周期内持续存在,而不是在每次重新创建 Activity 时都重新创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2020-10-08
    相关资源
    最近更新 更多