Android Volley onResponse&重新创建活动

时间:2014-08-18 16:19:18

标签: android android-activity android-volley

当我重新创建我的Activity(更改设备方向)并且我正在等待Volley请求响应时," onResponse"上的代码因为它在被破坏的活动上运行而无效。

这是基本情况。为了方便起见,我只使用" mWaitingServerResponse"作为关键信息。这很好用:

public void onLoginButtonClick(View view) {

        // Store we are waiting for server
        mWaitingServerResponse = true;

        sendLoginRequest();
}

public void sendLoginRequest() {
    StringRequest loginRequest = new StringRequest(
            Request.Method.GET, url, null,

            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    // Store we are not waiting for server anymore
                    mWaitingServerResponse = false;                     
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    // Store we are not waiting for server anymore
                    mWaitingServerResponse = false;
                }
            });
    mVolley.addToRequestQueue(loginRequest);
}

然后&#34; mWaitingServerResponse&#34;的值记住了savedInstanceState。

因此,当运行onResponse时,它会更改&#34; mWaitingServerResponse&#34;的值。在被破坏的活动上,而不是在设备方向改变后创建的活动上。我怎样才能对新活动进行onRespond行动?

1 个答案:

答案 0 :(得分:0)

对于有类似问题的其他人的自我回答:

现在我将尝试从setRetainInstance(true)的片段发送请求。这样,由于配置更改(例如设备方向)而重新创建Activity不会影响它。

为了避免泄漏,我认为应该在片段onDestroy()上取消请求,并且片段不能包含对与Activity绑定的对象的任何引用,例如Drawable,Adapter,View或与上下文关联的任何其他对象。