Async
Async를 비동기 처리를 할 수 있으며
주로 네트워크 작업을 할 때 많이 사용된다
간단하게 Async를 이요하여 ProgressBar를 구현해 보겠다
우선 간단하게 화면을 구성해 주었다
다음으로 AsyncTask를 상속받는 클래스를 만들어 주었다
AsyncTask는 3개의 타입 변수를 받는다
차례대로 params, progress, result를 받으며
params는 doInBackground에서 사용할 타입,
progress는 onProgressUpdate에서 사용할 타입,
result는 onPostExecute에서 사용할 타입이다
doInBackground는 쓰레드가 할 작업이며
onProgressUpdate는 메인쓰레드로 전달할 작업이며
onPostExecute는 작업을 다 마친 후 할 작업이다
먼저
변수 하나를 선언하고
onPreExecute 메소드를 오버라이드 해주었다
onPreExecute는 작업이 시작되기 전에 할 작업이다
다은은 doInBackground메소드를 오버라이드 해주었다
작업이 취소되지 않았다면 percent를 증가시키고
percent가 100이 넘지 않았다면 작업을 메인쓰레드에 가지고 들어가게 하였다
publishProgress에 전달된 인자가 onProgressUpdate의 파라미터로 들어간다
다음은 onProgressUpdate를 오버라이드 하였다
메인 쓰레드에서 업데이트할 작업들이다
마지막으로 작업이 취소되었을 때와
작업이 완료되었을 때를 구현해주었다
doInBackground에서 작업이 끝났을 때 리턴해준 타입이 onPostExecute으로 들어간다
Async 테스크를 만들고
버튼을 누르면 테스크를 실행하고 취소되게 하였다
결과
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.