Это код, над которым я работаю. Здесь я не могу обновить пользовательский интерфейс до тех пор, пока не закончится мой OnResponse
. Потому что мы делаем doInBackgrnd
, поэтому мой textresponse
пуст. И С onPostExecute
происходит сразу после.Состояние гонки с проблемой потока пользовательского интерфейса.
Для него я думаю, что PublicProgres должен помочь. Как вызвать PublishProgress в AsyncTask?
private class ConversationTask extends AsyncTask<String, Void, String> {
String textResponse = new String();
@Override
protected String doInBackground(String... params) {
System.out.println("in doInBackground");
MessageRequest newMessage = new MessageRequest.Builder().inputText(params[0]).context(context).build();
// async
GLS_service.message("xxxxxxxxx", newMessage).enqueue(new ServiceCallback<MessageResponse>() {
@Override
public void onResponse(MessageResponse response) {
context = response.getContext();
textResponse = response.getText().get(0);
action5(textResponse);
System.out.println(textResponse);
}
@Override
public void onFailure(Exception e) {
}
});
return textResponse;
}@Override protected void onPostExecute(String result) {
reply.setText(textResponse);
}
}
Помогите.
Вашего вопроса остается неясным. В чем проблема, с которой вы столкнулись? хотите ли вы показать что-то пользователю во время обработки фонового сервиса? – nandsito