Хотя, Вы не предоставили кусок кода.Но в целом я могу вам сказать, что вы должны позаботиться о многих вещах, когда создаете веб-запрос с помощью некоторых методов обратного вызова.Например, предположим, что у вас есть следующий фрагмент кода:
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextView.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn't work!");
}
});
// Set the tag on the request.
stringRequest.setTag(TAG);
// Add the request to the RequestQueue.
queue.add(stringRequest);
Это действительно зависит от логики вашего приложения, но, например, один из вариантов - полностью отменить запрос, когда пользователь покидает текущий фрагмент.Поэтому вы можете написать следующий код в onStop()
вашего фрагмента:
@Override
protected void onStop () {
super.onStop();
if (queue!= null) {
queue.cancelAll(TAG);
}
}
Другой вариант - проверить состояние фрагмента, прежде чем пытаться внести изменения, поскольку пользователь мог оставить фрагмент, когда вашвызывается метод обратного вызова:
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (isResumed())
{
mTextView.setText(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (isResumed())
{
mTextView.setText("That didn't work!");
}
}
});