아래 코드를 보시면 (아래 코드는 onclick 콜백 메서드의 일부입니다.)
result = new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
return sendLoginInfo(strings[0], strings[1]);
}
}.execute(IdString, passwordString).get();
"객체 생성 → execute → get → result에 저장" 의 과정이 순차적으로 일어나고 있는데
(질문 1) 레퍼런스를 보니 get 메서드는 작업이 모두 끝날 때까지 기다린 다음 결과를 리턴한다고 나와있습니다. 그러면 doInBackGround 가 끝날 때까지 메인 스레드가 잠시 멈추나요? 잠시 멈춘다면 이는 싱글 쓰레드와 다를 바가 없지 않나요? (첨언하자면 AsyncTask는 네트워크 액세스 시에 사용이 강제돼있어서 썼습니다.)
(질문 2) 작업 시간이 오래 걸리는 경우, get 메서드를 바로 호출하지않고 AsyncTask 인스턴스를 계속 가지고 있다가 나중에 get을 호출하여 결과를 얻어오는 것도 가능한가요?