일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dfs #bfs #이진트리 #파이썬 #리트코드
- leetcode #subsets #dfs #itertools #python
- 백준 #파이썬 #bfs #백트래킹 #1697 #숨바꼭질
- 코틀린 #Do it #깡샘 #안드로이드
- dfs #python #leetcode
- final #java #자바 #안드로이드
- Python #leetcode #dfs #그래프 #백트래킹
- dfs #그래프 #graph #python #leetcode #course #schedule
- python #백준 #9375 #패션왕 #신해빈
- 리트코드 #팰린드롬 #파이썬
- handler #looper #thread #runnable #핸들러 #루퍼 #스레드 #러너블
- gcd #최대공약수 #백준 #2981 #검문
- exoplayer #mediaplayer #엑소플레이어 #안드로이드 #android
- dfs #bfs #트리구조 #이진트리 #leetcode #파이썬 #python
- context #android #getApplicationContext #activity #생명주기 #lifecycle
- AsyncTask #doinbackground #스레드 #thread #android #안드로이드
- dfs #이진트리 #트리구조 #직렬화 #역직렬화 #파이썬 #리트코드 #leetcode #python
- dfs #leetcode #python
- 다익스트라 #알고리즘 #bfs #그리디 #다이나믹프로그래밍 #leetcode #python
- 해시테이블 #heapq #파이썬 #리트코드 #알고리즘
- 파이썬 #zip
- leetcode #python #dfs #재귀
- dfs #python #leetcode #combination
- dfs #bfs #트리구조 #이진트리 #leetcode #python #파이썬
- dfs #bfs #leetcode #python
- dfs #leetcode #python #graph #그래프
- python #백준 #2580 #스도쿠 #dfs #백트래킹
- 2004 #조합 0의 개수 #백준
- 아스테리스크 #Asterisk #파이썬
- 다익스트라 #dijkstra #leetcode #파이썬 #python #algorithm #787
- Today
- Total
멋진 개발자가 되고 싶다
[Android] AsyncTask란 무엇일까? 본문
(exoplayer 코드 분석을 하던 중 Asynctask라는 클래스를 발견했고 이 클래스가 어떤 역할을 하는지를 알아보고 간단하게 정리한 글)
앱을 실행하면 메인 스레드에서 코드를 한 줄 한 줄 실행을실행을 시키면서 나아간다.
그러다 만약 asset에서 많은 양의 데이터를 리스트로 읽어들이는 코드가 있다고 하자.
데이터의 양이 많아서 그 줄에서 몇 분이고 코드가 앞으로 나아가지 않고 정체되어 있다면
앱을 사용하는 사람 입장에선 난감할 것이다.
따라서 이때 Asynctask라는 클래스를 사용한다.
asynchronous는 "비동기적인"이라는뜻으로
메인 스레드가 실행되는 동안 Asynctask에서는 서브 스레드를 돌려서 작업을 수행한다.
그리고 작업이 끝나면 결과값을 메인 스레드로 보내준다.
우선 AsyncTask는 추상 클래스로, AsyncTask를 상속한 클래스를 생성해야 하고
제네릭 클래스로클래스로 AsyncTask<Params, Progress, Result> 형식을 갖기 때문에
ex) AsyncTask<String, Void, List <PlaylistGroup>>
Params : AsyncTask 실행에 필요한 데이터
Progress : 현재 작업 진행 정보를 나타내는 상황 값
Result : 작업 실행 완료 후 최종 결과
를 잘 맞춰서 넣어줘야 한다.
실행 단계는 총 4단계로
OnPreExecute -> doInBackground -> onProgressUpdate -> onPostExecute 순이라 볼 수 있다.
제일 중요한 단계는 doInBackground()인데
여기서 백그라운드 스레드로 호출이 된다.
첫 번째 타입이 인자로 들어가고 마지막 타입이 리턴 값이 된다.
백그라운드에서 동작시키고 싶은 코드를 여기에다 입력해주면 된다.
'Android' 카테고리의 다른 글
[android] @Nullable이란 무엇일까 (0) | 2021.08.02 |
---|---|
[Android] build.gradle이란 무엇일까 (0) | 2021.07.06 |
[Android Studio] SDK 라이브러리를 내 프로젝트로 가져오기 (0) | 2021.07.04 |