을 때는 시점의 생성자를 호출에 안드로이드?

0

질문

나를 통해 이 codelab: https://developer.android.com/codelabs/android-lifecycles#6 그것은 사용하는 방법에 대해 설명합 SavedStateHandle 에서 뷰 모델 생존하는 프로세스는 죽음. 생성자의 시점은 다음과 같습니다:

    private SavedStateHandle mState;

    public SavedStateViewModel(SavedStateHandle savedStateHandle) {
       mState = savedStateHandle;
    }

고 뷰 모델 초기화 활동에서는 다음과 같다:

    mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);

할 때는 뷰 모델 생성자라는? 그리고 어떻게 이 시점을 얻 savedStateHandle 매개 변수의 뷰 모델?

편집:

내가 찾 내 질문에 대답을 통해 이 블로그 게시물: https://www.rockandnull.com/viewmodel-savedstate/

는 경우SavedStateHandle 유일한 매개 변수에서 우리의 뷰 모델의 생성자 by viewModels 대리인에게 제공합니 뷰 모델 자동으로 합니다.

그러나, 는 경우 우리는 우리의 조합을 사용자 지정 매개변수에 의해 제공되는 종속성을 주입 프레임 워크(손잡)e.g:저장소의 몇 가지 다른 런타임을 인수 e.g:선택한 카테고리의 ID 및 SavedStateHandle 우리를 도와 생존 프로세스는 죽음에서 뷰 모델 생성자-어떻게 우리가 제공할 수 있는 모든 사람들 매개 변수는 공장입니까?

게시하는 작은 예에 대한 이해

android android-lifecycle viewmodel
2021-11-24 03:13:47
1

최고의 응답

4

이 Codelab 당신은 다음과 같은 이해하는 특정한 개념을 대신 전체 코드입니다. No 구현에 의해 제공에 관한 그들의 의심은,어떻게 이 시점을 얻을 그것의 매개변수는?


개요 때문에 특정 내부의 구현 뷰 모델할 수 없습니다 인수를 전달하는 시점이 아닌 직접 만들어야 하는 세 번째 클래스는 매개변수가 제시하는 뷰 모델.


대답하신 의심:

이라는 두 가지 방법이 있을 통해 어떤 시점을 얻을 수 있는 그것의 매개변수:

  1. Non-성 주입 방법: 여기서 당신은 클래스를 만들 확장 ViewModelProvider.공장입니다. 에서 당신의 코드,여기에 당신이 볼 수 있습니다:
  mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);

여기에는 기본 클래스를 만들어서,인수 없는 전달됩니다.이것은 목적으로 수행의 초기화,이는 불완전한 방식에서 주어진 codelab 을 표현할 수 있습니다. 당신이 얻을 수 있는 좋은 양의 지식에 동일한 개념을 통해 이 문서에서는:

https://medium.com/koderlabs/viewmodel-with-viewmodelprovider-factory-the-creator-of-viewmodel-8fabfec1aa4f

  1. 성 주입 방법: 지금이 가장 간단한 방법을 구현하 ViewModelProviders 당신이 알고 있는 경우 디 framework 담겨 있다. 여기서 당신은 단지에 주석을 추가할 필요하 뷰 모델와@ViewModelInject 당신은 할 수 있습니다.DI 프레임워크에 backgroun 만들 것입니다 ViewModelFactory 대신 당신이 그것을 하고 있다.이 예제 코드는 방법 당신은 매개 변수를 제공하는 뷰 모델을 사용하여 루:

class SampleViewModel @ViewModelInject constructor(
                     @Assisted private val savedStateHandle: SavedStateHandle) : ViewModel() { }
2021-11-24 04:17:44

나는 디버그에서 응용 프로그램 codelab. 그것의 생성자가 호출되는데 하지 전달하는 공장입니다. 어떻게 가능할까요? 을 통과 SavedStateHandle 생성자?
Neeraja Gandla

할 수 있습니 링크를 공유합니다. 당신은 응용 프로그램을 실행에 로컬로 안드로이드 스튜디오? 기 때문에 github 에 대한 링크를 코드에서 언급 codelab 언급 몇 가지 쓰임새 및 그들의 솔루션은 없 전체 본격적인 솔루션과 같은 완벽한 응용 프로그램
Karunesh Palekar

할 수 있는 소스 코드를 다운로드에서 여기: developer.android.com/codelabs/android-lifecycles#1
Neeraja Gandla

또한 보십시오 편집 섹션의 질문
Neeraja Gandla

행복한 당신이 당신의 대답이다.
Karunesh Palekar

할 수 있습니에 대한 자세한 정교한 귀하의 편집? 내가 못하고 정확한 콘텐츠를 알고 싶어요. 뷰 모델을 제공할 추가 기능의 캐싱에 대한 귀하의 데이터 화면 방향,그래서를 제공하는 이러한 기능,개발자를 찾을 수 있는 방법에 있어서,상기 이었다 하나 그들이 발견했다. 우리는 모든 안드로이드 개발자가를 통해 이동 등의 인스턴스에서 많은 우리의 경력,희망을 이해할
Karunesh Palekar

Neeraja Gandla

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................