분류 전체보기(129)
-
Debug & release Mode Build Type 나누기
Build Variant Android Studio 프로젝트를 생성 하고 Build Variants(Build -> Select Build Variant) 를 보면 debug 와 release 옵션이 자동으로 생성되어 있는걸 확인 할수 있습니다. 옵션 선택으로 debug or release 모드로 빌드 할수 있고 빌드 타입에 따라 옵션을 다르게 정의를 할수 있으며 설정은 App Gradle에 아래와 같이 정의 되어 있습니다. debug 와 release 는 기본 타입으로 삭제가 불가능 하며 debug 모드는 숨겨져 있습니다. 빌드 타입은 새로 추가 할수 있습니다. release -> NewRelease 변경 변경하니 아래와 같이 debug 와 release는 그대로 있고 NewRelease만 새로 생성된..
2021.01.29 -
hilt - @HiltViewModel
Hilt로 ViewModel 객체 삽입 @ViewModelInject(Deprecated) -> @HiltViewModel 변경됨 HiltView Model로 주석이 달린 View Model은 "dagger.hilt.android.lifecycle.dagger.hilt.android.lifecycle.HiltViewModelFactory" 의해 생성 됩니다. 기본적으로 Android EntryPoint로 주석이 달린 Activity 또는 Fragment에서 검색할 수 있습니다. Inject로 주석이 달린 생성자를 포함하는 "HiltView Model"은 Dagger's Hilt에 의해 주입된 생성자 매개 변수에 종속성이 정의된다. @HiltViewModel public class DonutViewMode..
2021.01.29 -
LiveData - MutableLiveData, Transformation
MutableLiveData란 변경할 수 있는 LiveData 형입니다. 일반적인 LiveData형은 변경할 수 없고 오로지 데이터의 변경값만을 소비하는데 반해 MutableLiveData는 데이터를 UI Thread와 Background Thread에서 선택적으로 바꿀 수 있습니다. private val _post = MutableLiveDta() // _post로 선언된 MutableLiveData를 post를 통해 발행합니다. // 이렇듯 ViewModel에서만 _post를 변경할 수 있기때문에 보안에 더 좋습니다. val post :LiveData get() = _post 데이터를 Activity에서 받으려면 //조금전 ViewModel에서 post LiveData를 Observe합니다. //첫번..
2021.01.22 -
hilt - @ApplicationContext, @ActivityContext, @EntryPoin
Hilt는 몇 가지 사전 정의된 한정자를 제공합니다. 예를 들어 애플리케이션 또는 활동의 Context 클래스가 필요할 수 있으므로 Hilt는 @ApplicationContext 및 @ActivityContext 한정자를 제공합니다. class AnalyticsAdapter @Inject constructor( @ActivityContext private val context: Context, private val service: AnalyticsService ) { . @EntryPoint - 예를 들어 Hilt는 콘텐츠 제공자를 직접 지원하지 않습니다. 콘텐츠 제공자가 Hilt를 사용하여 일부 종속 항목을 가져오도록 하려면 원하는 결합 유형마다 @EntryPoint로 주석이 지정된 인터페이스를 정의하..
2021.01.21 -
Hilt - @Provides, @Qualifier
@Provides를 사용하여 인스턴스 삽입 인터페이스가 유형을 생성자 삽입할 수 없는 유일한 경우는 아닙니다. 클래스가 외부 라이브러리에서 제공되므로 클래스를 소유하지 않은 경우(Retrofit, OkHttpClient 또는 Room 데이터베이스와 같은 클래스) 또는 빌더 패턴으로 인스턴스를 생성해야 하는 경우에도 생성자 삽입이 불가능합니다. 이전 예를 생각해 보세요. AnalyticsService 클래스를 직접 소유하지 않으면 Hilt 모듈 내에 함수를 생성하고 이 함수에 @Provides 주석을 지정하여 이 유형의 인스턴스를 제공하는 방법을 Hilt에 알릴 수 있습니다. 주석이 달린 함수는 Hilt에 다음 정보를 제공합니다. 함수 반환 유형은 함수가 어떤 유형의 인스턴스를 제공하는지 Hilt에 알려줍..
2021.01.21 -
Hilt - @Inject 주석, @Module, @InstallIn, @Binds
@Inject 주석을 사용하여 필드 삽입을 실행합니다. " 아래 analytics 변수는 initializer 하지 않았다. 일반적으로는 아래 로그는 Caused by: kotlin.UninitializedPropertyAccessException: lateinit property analytics has not been initialized 와 같은 에러를 호출하며 죽어야 정상이나 @Inject 주석을 사용하므로 인해 자동으로 initialized되어 죽지않고 "test" 라는 로그를 출력해준다. " @AndroidEntryPoint class MainActivity : AppCompatActivity() { @Inject lateinit var analytics: AnalyticsAdapter ove..
2021.01.20