Я сталкивался с этой «статической» проблемой в асинхронной задаче ранее, и есть действительно хороший способ вернуть вывод асинхронной задачи в действие. Проще говоря
String output = myAsyncTask.execute(url).get();
Вы получите вывод, окончательный код.
progressBar.setVisibility(View.VISIBLE);
String output = myAsyncTask.execute(url).get();
progressBar.setVisibility(View.GONE);
Пока вы не получите вывод, следующая строка не будет выполнена. Я добавляю пример кода для дальнейшей демонстрации.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button exe = findViewById(R.id.async);
exe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
updateAsyncTask up = new updateAsyncTask();
long l = up.execute().get();
System.out.println("inside main "+l);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
private static class updateAsyncTask extends AsyncTask<Void, Void, Long> {
@Override
protected Long doInBackground(Void... voids) {
long l = 0;
for(int i=0;i<2000;i++)
{
l = l+i;
System.out.println(l);
}
return l;
}
}