Я работаю с API в первый раз.
Мне нужно, чтобы мне нужно было сформировать URL с определенными параметрами, из которых один параметр не может быть сформирован в потоке основного пользовательского интерфейса и должен бытьсформирован в фоновом потоке.
Я планирую использовать библиотеку залпа для отправки запроса GET.
Я использую библиотеку Needle , которая помогает в выполнении фоновых задач,Это то, что я пробовал до сих пор.
Needle.onBackgroundThread().execute(new UiRelatedTask<String>() {
@Override
protected String doWork() {
return url = GetUrl();
}
@Override
protected void thenDoUiRelatedWork(String result1) {
Log.e("JSON", url);
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener() {
@Override
public void onResponse(Object response) {
Log.e("JSON", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("JSON", error.toString());
}
});
RequestQueue queue = VolleyController.getInstance(Activity.this.getApplicationContext()).getRequestQueue();
queue.start();
queue.add(jsonObjectRequest);
}
});
Но главная проблема в том, что после немедленного вызова метода GetUrl()
вызывается метод thenDoUiRelatedWork
, следовательно, запрос выполняется с использованием неверного URL в качестве URLбудет по-прежнему загружаться в фоновом режиме, а затем, когда загрузка URL-адреса закончится, я регистрирую URL-адрес, который является правильным.
Я не могу использовать AysncTask, так как мое приложение уже использует три AsyncTak и, кроме того, еще два могутбыть активирован пользователем на основе функции, которую он использует.А также запрос API должен выполняться в разных местах (3-4 места), поэтому использование AsyncTask не подойдет.
Может кто-нибудь помочь мне сначала полностью сформировать URL в фоновом режиме и использовать залпотправить запрос GET.