loginWithKakaoTalk() 에서 FLAG_ACTIVITY_NEW_TASK 에러

Android SDK로 카카오 로그인을 구현하고 있습니다. Compose로 카카오 로그인 버튼을 만들어서 클릭했을 때, ViewModel에 있는 카카오 로그인 함수를 실행 시키는 식으로 로직을 작성했는데, ViewModel에서 Activity Context를 참조하면 Memory Leak이 발생한다고 알고 있어 AndroidViewModel을 사용해 applicationContext를 사용하였습니다. 그런데 loginWithKakaoAccount()에서는 context.startActivity() 부분에서 addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 가 작성되어 있어 ApplicationContext로 실행이 가능한데, loginWithKakaoTalk() 에는 해당 코드가 없어 ApplicationContext로 실행하니까 아래처럼 오류가 뜨더라고요.
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
혹시 loginWithKakaoTalk() 에서는 addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)가 작성되지 않은 이유가 따로 있을까요? 꼭 Activity Context를 사용해야 한다면 ViewModel 에서 Activity Context를 어떤식으로 참조해야 Memory Leak을 피할 수 있을지 조언 부탁드립니다.
만약 addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 추가해도 별 문제가 없다면 추가 부탁드립니다 :slight_smile:

ViewModel에서 해당 메서드를 호출하고자할 때 Compose 컴포넌트로부터 context 정보를 파라미터로 받아 사용면 어떨까요?

@Composable
fun signIn(viewModel: SignInViewModel = hitlViewModel()) {
  val context = LocalContext.current

  Column() {....}
}

처럼 context 정보를 받아 이를 viewModel에서 수행하는 함수에 전달해주면 가능하지않을까합니다.

1개의 좋아요