일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Kotlin
- 백준
- MiTweet
- relay
- AWS
- 암호학
- activity
- TEST
- 프로그래머스
- android
- 코드포스
- 코루틴
- boj
- pandas
- ProGuard
- GitHub
- MyVoca
- Codeforces
- 쿠링
- Hilt
- Compose
- Rxjava
- Gradle
- Python
- Coroutines
- textfield
- Coroutine
- livedata
- architecture
- androidStudio
- Today
- Total
목록Primary/Android (80)
이동식 저장소
알 수 없는 에러 Proguard를 적용한 후 이상한 에러가 발생한다. java.lang.NullPointerException: Parameter specified as non-null is null: method com.practice.hanbitlunch.screen.Menu., parameter name at com.practice.hanbitlunch.screen.Menu.(Unknown Source:2) at com.practice.hanbitlunch.screen.MainUiStateKt.a(Unknown Source:52) at com.practice.hanbitlunch.screen.MainScreenViewModel.e(Unknown Source:89) at j4.b$a.j(Unknown..
아주 특이한 경우이긴 하지만, 앱에서 긴 로그를 찍고 있는지 살펴보자. Android Studio에 로그를 보내는 작업이 꽤 무거운 작업인 듯하다. 오늘 한빛 캘린더 앱을 디버깅하다 알아낸 사실이다. 로그 찍는 코드만 주석으로 지워보니 UI의 반응이 빨라졌다.
Dagger가 직접 지원하지 않는 클래스에서 객체를 주입받고 싶다면 entry point를 사용해 보자. Entry point는 Dagger가 관리하는 객체 간의 그래프를 참조하기 위한 진입점 역할을 한다. AndroidEntryPoint 사실 우리는 이미 ``@AndroidEntryPoint``라는 어노테이션을 알고 있다. ``@AndroidEntryPoint``는 Hilt가 미리 정의해 둔 entry point로, Activity나 Fragment 등 주요 Android 클래스에서 Hilt 컴포넌트와 해당 컴포넌트에 설치된 Hilt 모듈에 접근할 수 있게 한다. 그러나 ``AndroidEntryPoint``를 사용해도 Hilt가 지원하지 않는 클래스에서 객체를 주입받을 수는 없다. 이런 경우에는 어쩔..
Hilt module은 Dagger의 module에 ``@InstallIn`` 어노테이션을 추가한 형태이다. 잠깐 복습: ``@InstallIn`` 어노테이션을 사용하면 module을 어느 component에 설치할 지, 즉 해당 module에 정의된 의존성을 어느 범위에서 사용할 수 있는지 지정할 수 있다. ``@InstallIn`` 모듈에 ``@InstallIn`` 어노테이션을 붙일 수 있다. Hilt를 사용할 때는 모든 module에 ``@InstallIn``을 붙여야 한다. ``@InstallIn``이 없는 모듈은 어떠한 Hilt component에도 속하지 않고, 어쩌면 컴파일 에러가 날 수도 있다. 모듈을 ``SingletonComponent``에 설치하는 예시이다. @Module @Insta..
Hilt는 Jetpack ViewModel을 생성자 주입할 수 있다. 생성자 주입이란 생성자에 ``@Inject`` 키워드를 붙이는 방식이다. @HiltViewModel class MainScreenViewModel @Inject constructor( private val someData: Data ) : ViewModel() { /* ... */} 이제 ``@AndroidEntryPoint`` 어노테이션이 붙은 클래스에서 ViewModel 객체를 얻을 수 있다. ``by viewModels()`` 구문이 많이 사용된다. KTX(KoTlin eXtension) 구문 중 하나이다. 기차 아님. @AndroidEntryPoint class MyActivity : AppCompatActivity() { pr..