Диспетчер работ: как вернуть результат только после выполнения сетевого запросаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Диспетчер работ: как вернуть результат только после выполнения сетевого запроса

Сообщение Anonymous »

Это мой рабочий класс, и я попробовал его, но, похоже, он работает не так, как я хочу. Я хочу вернуть результат doWork() только после выполнения запроса PUT. Будем благодарны за любую помощь, спасибо.

Код: Выделить всё

public class MyWorker extends Worker {
private Context context;

public MyWorker(
@NonNull Context context,
@NonNull WorkerParameters params) {
super(context, params);
this.context = context;
}

@NonNull
@Override
public Result doWork() {
return putData();
}

private Result putData() {
final Result[] result = new Result[1];
String url = "https://www.myurl.com";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.PUT, url, null, new Response.Listener() {

@Override
public void onResponse(JSONObject response) {
if(response == null)
result[0] = Result.retry();
else
result[0] = Result.success();
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
// TODO: Handle error
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
result[0] = Result.retry();
} else if (error instanceof AuthFailureError) {
//TODO
} else if (error instanceof ServerError) {
//TODO
result[0] = Result.retry();
} else if (error instanceof NetworkError) {
//TODO
result[0] = Result.retry();
} else if (error instanceof ParseError) {
//TODO
}
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
}
}) {
@Override
public Map getHeaders() throws AuthFailureError {
return params;
}

@Override
protected Map getParams() throws AuthFailureError {
return super.getParams();
}
};

VolleyHelper.getInstance(context).addToRequestQueue(jsonObjectRequest);
return result[0];
}


Подробнее здесь: https://stackoverflow.com/questions/594 ... st-is-done
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»