728x90
네트워크 작업 등을 하려면 백그라운드에서 작업하는 별도의 쓰레드가 필요하다.
보통은 inner class로 만든다
AsyncTask<params, progress, result>를 상속받아서 만들어야 한다.
인자는 수행하는 데에 필요한 인자,
progress는 UI쓰레드로 결과를 보낼 것 (progress진행상태 업데이트를 위해)
result는 말그대로 수행 후 리턴되는 결과
ex)
class MyAsyncTask(context: MainActivity) : AsyncTask<URL, Unit, String>() {
onPreExecute() : 태스크 실행 전 set up하는 부분
doInBackGround() : 백그라운드에서 동작하는 main 부분
onProgressUpdate() : progress bar등등..
onPostExecute() : doInBackGround()에서 작업이 끝나면 return된 결과가 이곳의 인자로 들어간다.
onCancelled() : 태스크 취소되면 호출되는 부분
inner class로 만들기 때문에, (static)
* 백그라운드 태스크가 종료된 액티비티를 참고해 메모리 누수가 일어나지 않도록 !약한 참조!
val activityReference = WeakReference(context)
val activity = activityReference.get() // 이런식으로 activity가 필요할 때마다 get해서 얻어 쓴다.
'Kotlin > 안드로이드 공부' 카테고리의 다른 글
RecyclerView에 listener 달아주기 (0) | 2020.05.17 |
---|---|
RecyclerView 만들기 (0) | 2020.05.17 |
첫방문 shared preference (0) | 2020.05.17 |
editText 한번에 지우는 버튼 (0) | 2020.05.13 |
layoutInflater 레이아웃 객체화 (0) | 2020.04.29 |