일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- androidStudio
- Python
- GitHub
- 쿠링
- Coroutine
- Kotlin
- AWS
- Rxjava
- ProGuard
- livedata
- 코루틴
- 코드포스
- 암호학
- Gradle
- MyVoca
- activity
- TEST
- Hilt
- Compose
- pandas
- architecture
- boj
- textfield
- Codeforces
- relay
- 프로그래머스
- MiTweet
- Coroutines
- android
- Today
- Total
목록Primary (163)
이동식 저장소
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..
Composition 단계에서 UI 트리의 내용을 옮길 수 있다면 많은 이득을 얻을 수 있다. Recomposition 과정 속에서 composable을 다시 만들지 않고 그대로 옮김으로써 내부 상태를 보존할 수 있기 때문이다. 다음 코드를 보자. @Composable fun MyApplication() { if (Mode.current == Mode.Landscape) { Row { Tile1() Tile2() } } else { Column { Tile1() Tile2() } } } ``Mode``의 값이 바뀌면 ``Tile1()``과 ``Tile2()`` 내부의 모든 값이 초기화된다. 하지만 tile 두 개를 하나의 composition 묶음으로 생각하면 어떨까? @Composable fun MyA..
Compose는 여러 단계를 거쳐 UI를 그린다. Android View 시스템에서는 measure, layout, drawing 세 단계를 거쳐 UI를 그린다. Compose도 비슷한 방법으로 UI를 그리지만, 맨 앞에 composition이라는 아주 중요한 과정이 추가된다. UI를 그리는 3단계 (UI phases) Composition: UI가 무엇을 그릴지 결정한다. Compose는 이 단계에서 composable 함수를 실행하여 UI 트리를 만든다. Layout: UI 요소들의 크기와 위치를 결정한다. 크기를 결정하는 과정은 measurement, 위치를 결정하는 과정은 placement라고 한다. UI 트리의 노드(=composable)들은 자신과 자식 노드의 크기와 좌표를 결정한다. Draw..
주의: 이 블로그에서 말하는 바인딩은 ``@Binds``와 ``@Provides`` 모두를 의미합니다. Entry Point란 변수를 주입받을 수 있는 클래스를 말한다. Hilt의 모태인 dagger에도 존재하는 유서깊은 개념이다. ``Application``에서 의존성 주입 기능을 활성화했다면 다른 안드로이드 클래스에서 변수를 주입받을 수 있다. 그런데 모든 클래스에서 주입받을 수 있는 건 아니고, 다음 클래스에서만 멤버를 주입받을 수 있다. Activity (``ComponentActivity``) Fragment (androidx ``Fragment``) View Service BroadcastReceiver ViewModel 사실 ``ViewModel``은 다른 5개의 클래스와는 약간 다른 방식이..