![](/img/trans.png)
[英]Android Volley onResponse not getting Called in Certain Activity
[英]Android Volley onResponse & recreating an 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);
}
然后,使用saveedInstanceState记住“ mWaitingServerResponse”的值。
因此,运行onResponse时,它将在已销毁的活动上更改“ mWaitingServerResponse”的值,而不是在更改设备方向后创建的活动上更改该值。 如何使onRespond对新活动采取行动?
具有类似问题的其他人的自我解答:
现在,我将尝试使用setRetainInstance(true)
从片段发送请求。 由于配置更改(例如设备方向)而重新创建活动的这种方式不会影响它。
为避免泄漏,我认为应在片段onDestroy()
上取消该请求,并且该片段不得包含对与Activity绑定的对象的任何引用,例如Drawable,Adapter,View或其他与上下文相关联。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.