Про метод get() класса AsyncTask сказано, что при вызове его в основном потоке до завершения операции в AsyncTask, он будет ждать ее завершения полностью заблокировав вызвавший его поток. Разве это распространяется на код "до" вызова get()? Например при вызове get() в слушателе нажатий поток останавливается еще до вызова get() и операция указанная до get() тоже ждет конца операции в AsyncTask. Но я вижу примеры в которых код до get() выполняется прежде чем поток будет заблокирован. Это устаревшие примеры?
class MyAsyncTask extends AsyncTask<Void,Void,Integer>{
protected void onPreExecute(){
super.onPreExecute();
tvInfo.setText("Pre Execute");
}
@Override
protected Integer doInBackground(Void... voids) {
try{
sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
return 100500;
}
protected void onPostExecute(Integer i){
super.onPostExecute(i);
tvInfo.setText("Post Execute with result="+i);
}
}
public void onClick(View v) {
if(maTask == null) {return;}
tvInfo.setText("GET IS PRESSED");
try{
Toast.makeText(this,"RESULT IS "+ maTask.get(1, TimeUnit.SECONDS),Toast.LENGTH_SHORT ).show();
}catch(ExecutionException| InterruptedException e){
e.printStackTrace();
}catch (TimeoutException e){
Toast.makeText(this,"TIMEOUT EXCEPTION",Toast.LENGTH_SHORT).show();
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно чтобы строка типа "+ 5 7" делилась на знак, число, числоЗнак любой, число любое
Помогите разобраться с мистическим поведениемИмеется сущность