【问题标题】:java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again in volleyjava.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again in volley
【发布时间】:2016-03-29 03:52:45
【问题描述】:

您好,我在使用 volley 与服务器进行通信时遇到了这个问题。我附上了与服务器发生通信的代码。请帮助我

SharedPreferences ciuidpref = context.getSharedPreferences(Utility.CIUIDFILENAME, 0);
        SharedPreferences pref = SuiteApplication.getAppContext().getSharedPreferences(Utility.CLOUD_COMM_PREF, 0);
        if (!pref.getBoolean("rbDisable", false) && pref.getBoolean("rbTenMin", true)) {
            RequestQueue mRequestQueue;
            Cache cache;
            if (lockService.context != null) {
                cache = new DiskBasedCache(Service.context.getCacheDir(), 1024 * 1024); // 1MB cap
            } else {
                cache = new DiskBasedCache(SuiteApplication.getAppContext().getCacheDir(), 1024 * 1024); // 1MB cap
            }
            Network network = new BasicNetwork(new HurlStack());
            mRequestQueue = new RequestQueue(cache, network);
                mRequestQueue.start();

            String requestedUrl = Utility.mPINGSERVICE_URL + Utility.getCIUIDValue(context) + "&UniqueIdentifier=" + Utility.getUIDValue(context);
            StringRequest stringRequest = new StringRequest(Request.Method.GET, requestedUrl, new Response.Listener<String>() {
                @Override
                public void onResponse(String responseFromServer) {

            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError errorResponse) {

                }
            });
            mRequestQueue.add(stringRequest);
            stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2));
        }

在此请求之后,如果从服务器获得响应,我再次尝试使用 volley 与服务器通信。该确认代码附在下面,

private void sendAcknowledgePingService(final CommunicationInterface interfaceReference, final String initialPingResponse) {
        String requestedUrl = Utility.mPINGSERVICE_URL + Utility.getCIUIDValue(context) + "&UniqueIdentifier=" + Utility.getUIDValue(context) + Utility.mPING_ACK;
        StringRequest stringRequest = new StringRequest(Request.Method.GET, requestedUrl, new Response.Listener<String>() {
            @Override
            public void onResponse(String responseFromServer) {


            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError errorResponse) {

            }
        });
        ((SuiteApplication) SuiteApplication.getAppContext()).addToRequestQueue(stringRequest);
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2));
    }

使用两个请求队列有什么问题吗?

【问题讨论】:

    标签: android exception android-volley


    【解决方案1】:

    最可能的原因是,您收到的字符串大小超过了保存数据的字符串最大容量的限制,请告诉我您尝试获取的数据大小。

    【讨论】:

    • 感谢您的回复,但我收到的回复很少。以前我忘了完全附加我的代码。请再检查一次
    • 您能否提供准确完整的跟踪信息。还有两个响应的大小
    • 另外你不需要使用两个请求队列,在大多数情况下1个就足够了。所以保持简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多