마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

asynctask 일시정지/시작에 대해 질문드립니다.

0 추천
안녕하세요.

asynctask를 사용하다가 궁금한 점이 있어 질문글 올립니다.

onPreExecute에서 다이얼로그를 하나 띄운후 doInBackground에서 작업을 하다가

다이얼로그의 일시정지[pause]버튼을 누르면 현재 작업을 잠시 멈추고,

다시 누르면 그 상태에서 이어서 진행하는 기능을 구현하려고 합니다.

찾아보니 asynctask의 wait를 사용하면 일시정지/notify를 하면 다시시작한다는데..

다른글을 보면 Thread.sleep()으로도 된다고 하는데요.

일단 후자의 방법으로 제가 원하는 시간만큼 슬립-n초지남-자동으로 task 작업시작

이런식으로 되더라고요. wait,notify로도 확실히 pause/resume이 되나요?
망고사탕 (5,000 포인트) 님이 2017년 8월 22일 질문

1개의 답변

0 추천
sleep, wait, notify 모두 확실하게 원하는 시간에 멈추기는 힘듭니다.

해당 take로  pause/resume 요청을 보낼 뿐이고, 그 요청이 언제 받아들여질지는 불확정적입니다.

다이얼로그로 pause/resume을 컨트롤하기에는 sleep()보다 wait()가 좋아보입니다.
sleep()은 하나의 스레드를 계속해서 사용하지 못하게 하는 무거운 작업이라고 생각하시면 됩니다.
minor (13,710 포인트) 님이 2017년 8월 22일 답변
답변 감사합니다.
말씀해주신대로 버튼을 눌렀을 때 boolean인자를 기준으로 doinbackground에서 wait를 걸었는데요, wait인 상태에서는 아예 asynctask같은 thread류가 종료되는것인가요? 다시 doinbackground를 타지 않는 것 같아서요.
요점은 wait에서 다시 활성화 시키기 위해 notify를 하고싶은데 이게 안됩니다..
...