Я посылаю простые строковые запросы с помощью Volley для получения JSON данных. Запросы отправляются в onCreateView и когда пользователь нажимает кнопку. Первый запрос занимает очень много времени (обычно от 3 до 4 секунд). Все остальные запросы занимают от 200 мс до 1,5 секунд, в зависимости от того, насколько быстро соединение inte rnet. Когда я закрываю приложение и запускаю его снова, первый запрос снова занимает столько времени.
Есть идеи, что вызывает такую длительную задержку и как я могу ее исправить? Заранее спасибо.
public class MyFragment extends Fragment {
private static RequestQueue mQueue;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my_fragment, container, false);
setHasOptionsMenu(true);
if (mQueue == null) {
mQueue = Volley.newRequestQueue(requireContext());
}
downloadData();
return view;
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.menu_my_fragment, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.refresh) {
downloadData();
}
return super.onOptionsItemSelected(item);
}
private void downloadData() {
mQueue.cancelAll("myRequests");
StringRequest stringRequest = new StringRequest(Request.Method.GET, "https://....",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("MyFragment", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
stringRequest.setTag("myRequests");
mQueue.add(stringRequest);
}
.
2020-04-23 18:00:17.068 20123-20285/de.mypackage D/Volley: [9445] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] https://.... 0x3b23467b NORMAL 1> [lifetime=3029], [size=106467], [rc=200], [retryCount=0]
2020-04-23 18:00:17.123 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (3094 ms) [ ] https://.... 0x3b23467b NORMAL 1
2020-04-23 18:00:17.123 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+0 ) [ 2] add-to-queue
2020-04-23 18:00:17.124 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+5 ) [9444] cache-queue-take
2020-04-23 18:00:17.124 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+1 ) [9444] cache-hit-expired
2020-04-23 18:00:17.124 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+1 ) [9445] network-queue-take
2020-04-23 18:00:17.124 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+3034) [9445] network-http-complete
2020-04-23 18:00:17.125 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+8 ) [9445] network-parse-complete
2020-04-23 18:00:17.125 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+3 ) [9445] network-cache-written
2020-04-23 18:00:17.125 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+0 ) [9445] post-response
2020-04-23 18:00:17.125 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+42 ) [ 2] done
2020-04-23 18:00:20.613 20123-20284/de.mypackage D/Volley: [9444] WaitingRequestManager.maybeAddToWaitingRequests: new request, sending to network https://....
2020-04-23 18:00:20.792 20123-20175/de.mypackage I/mypackage: ProcessProfilingInfo new_methods=4359 is saved saved_to_disk=1 resolve_classes_delay=8000
2020-04-23 18:00:20.829 20123-20286/de.mypackage D/Volley: [9446] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] https://.... 0x3b23467b NORMAL 2> [lifetime=211], [size=106467], [rc=200], [retryCount=0]
2020-04-23 18:00:20.857 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (249 ms) [ ] https://.... 0x3b23467b NORMAL 2
2020-04-23 18:00:20.857 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+0 ) [ 2] add-to-queue
2020-04-23 18:00:20.857 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+1 ) [9444] cache-queue-take
2020-04-23 18:00:20.858 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+4 ) [9444] cache-hit-expired
2020-04-23 18:00:20.858 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+4 ) [9446] network-queue-take
2020-04-23 18:00:20.858 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+213 ) [9446] network-http-complete
2020-04-23 18:00:20.858 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+4 ) [9446] network-parse-complete
2020-04-23 18:00:20.859 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+2 ) [9446] network-cache-written
2020-04-23 18:00:20.859 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+0 ) [9446] post-response
2020-04-23 18:00:20.859 20123-20123/de.mypackage D/Volley: [2] MarkerLog.finish: (+21 ) [ 2] done
Редактировать: Это происходит только с моим WiFi дома. Я также нашел кое-что еще интересное. DEFAULT_TIMEOUT_MS
влияет на время загрузки. Когда я пытаюсь это сделать, это занимает 20 секунд:
stringRequest.setRetryPolicy(new DefaultRetryPolicy(20000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Есть идеи?