MapRepoImpl 트슈

sooj·2023년 12월 8일

최종

목록 보기
6/6

requireContext 프래그먼트에서 호출해야하는 메서드이며, 프래그먼트 내부에서 직접 호출해야함

BUT

현재 코드에서는 requireContext를 활성화된 스코프(lifecycleScope) 내부에서 호출하고 있음


 withContext(Dispatchers.Main) {
        val intent = Intent(requireContext(), MapUserDetailActivity::class.java)
        intent.putExtra(MapUserDetailActivity.USER, user)
        startActivity(intent)
    }
}

로 수정해보기

Dispatchers.Main

  • 코드를 메인 스레드에서 실행할 수 있도록 한다. withContext가 호출되면 코루틴을 일시 중단하고 대기열에서 기다렸다가 다시 시작하게 되는데, Main thread에 있는 상태에서 withContext(Dispatchers.Main)를 호출하면 불필요하게 dispatch하는 비용이 발생한다. 이를 방지하기 위해 Main thread에서 호출되면 다시 dispatch 하지 않도록 하는 Dispatchers.Main.immediate를 withContext의 인수로 활용할 수 있다. 다른 dispatcher들은 즉시 dispatch를 지원하지 않는다.

https://velog.io/@geronimo124/Kotlin-Coroutines-dispatchers

profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글