Safe delay in Android Views: goodbye Handlers, Hello Coroutines!
딜레이를 줄때 핸들러 대신 코루틴으로 해결하자~
기존에 핸드러를 이용하여 딜레이를 줄때는 다음과 같이 사용했다.
init{
handler.postDelayed({action},300L)
or
postDelayed({action},300L)
이와같은 사용은 Deprecated되지 않았으며 그렇게 복잡하지도 않다. 하지만 그 내부에서 발생하는 작업들은 유용하지않다.
핸들러는 메인 쓰레드와 연관되어있다.
즉, 딜레이를 실행할때마다 새로운 Runnable객체를 생성하고 큐에 추가해주어야한다.
이건 큐에 담긴 딜레이가 실행될때 뷰를 종료하거나 detach할때도 역시 동작하므로 에러를 발생시킬수 있다.
(→ 이걸 해결하기위해 보통 핸들러를 사용할때 detach, destroy 라이프사이클에서 핸들러를 제거한다.
handler.removeCallbacks~~)
코루틴을 사용하자~(LifeCycle을 알고있는!)
현재 라이프사이클에 액세스하여 새 코루틴을 시작하여 메서드가 진행되기 전에 딜레이를 사용할수 있다.