inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

냉동코더의 알기 쉬운 Modern Android Development 입문

ViewModelProviderFactory에 관련해서...

266

juneeeiii

작성한 질문수 7

0

ViewModelProviderFactory이 잘 이해가 안갑니다!!

Repository와 ViewModel 둘 만 있으면 ViewModel 생성자 부분이 아닌 다른 곳에다가 변수로 Repository를 선언해주면 똑같이 api호출할 수 있는 것 아닌가요!?

굳이 왜 ViewModelProviderFactory가 필요한지 이해가 안갑니다!

android architecture kotlin jetpack

답변 2

0

냉동코더

ViewModel 내부에서 Repository 인스턴스를 만드는 것은 좋은 방법이 아닙니다. 외부에서 인스턴스를 만들어 의존성으로 주입하시는 것이 가장 좋은 방법인데, 의존성 주입에 대해서는 [섹션 10. Dagger-Hilt]를 학습하시면 잘 사용하실 수 있으실거에요 :)

0

juneeeiii

넵!! 자세한 답변 감사드립니다 :)

0

냉동코더

외부에서 작성한 Repository 인스턴스를 ViewModel에 전달해 주어야 하는데 ViewModelProvider로 ViewModel 인스턴스를 생성할 때는 초기값을 전달할 수가 없습니다. 그래서 ViewModelProvider.Factory를 사용해 초기값으로 전달하는 것입니다.

Practice2C 시점에서는 Repository에 싱글톤으로도 사용할 수 있는 api 밖에 없어서 굳이 초기값으로 전달해야 할 필요성이 안 보일 수도 있으나, 이후 강의에서 여러가지 모듈이 추가되기 때문에 초기값으로 전달해 준 것입니다. 참고하시라고 강의가 완료된 시점의 Repository 코드 링크를 첨부해 드립니다.

https://github.com/cliearl/book-search-app/blob/master/app/src/main/java/com/qualitybitz/booksearchapp/data/repository/BookSearchRepositoryImpl.kt

0

juneeeiii

자세한 답변 감사합니다!!

제가 첫 프로젝트에서 진행할 때에는 밑에 처럼 생성해서 사용하였습니다.

별 다른 문제 없이 api를 호출할 수 있었는데, 밑에 처럼 했을 때 생기는 문제점이 있을까요?

<activity 코드>
val viewModel = ViewModelProvider(this).get(MainViewModel::class.java)


<ViewModel 코드>
    private val repository = Repository()

    private val _result = MutableLiveData<List<Plant>>()
    val result : LiveData<List<Plant>>
        get() = _result

    fun getAllData() = viewModelScope.launch {
        Log.d("MainViewModel", repository.getAllData().toString())
        _result.value = repository.getAllData()

    }

Coroutine, Flow 질문

0

401

1

Transformations import 안됨

0

588

1

moshi관련 질문입니다.

0

566

2

searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.

0

375

1

안드로이드에서 아키텍처 패턴

0

423

1

RecyclerView.Adapter vs ListAdpater

0

473

1

Flows 와 Coroutine

1

573

1

[BookSearchAdapter] onBindViewHolder의 currentList[position] 질문

0

370

1

코루틴 메모리 관련해서 질문드립니다!

0

456

1

Java Bill Pugh Solution 에서 INSTANCE

0

469

1

nested json에서 특정 부분만 파싱하는법

0

495

1

Fragment에서의 viewBinding

0

525

3

toolbar 질문드립니다.

0

417

2

EditText 에서 delay 주셔서 처리하셨는데 flow 의 debounce() 하고 같은건가요?

2

568

1

코루틴 관련 질문

0

549

1

오류

1

494

2

강사님! 직렬화 라이브러리를 Moshi, kotlin serialization 두개를 사용하시던데 이유가 있으신가요?

1

749

1

EditText 는 kill 해도 값이 잘 저장되어있던데 혹시 제가 잘못테스트했을까요?

1

354

1

서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?

1

530

1

GSON 이 아닌 Moshi 를 사용하시는 이유가 있을까요?

1

1271

1

EditText 는 액티비티가 재생성되어도 값이 남아있던데 이유가 궁금해요

1

498

1

ViewModel 생성시 왜 초기값을 받지 않도록 했을까요?

1

438

1

Room DB에 id 항목 추가

0

255

1

안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.

0

410

2