일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- room
- ViewModel
- recyclerview
- 알고리즘
- 코틀린
- CoordinatorLayout
- 백준
- activity
- Navigation
- View
- Algorithm
- notification
- Behavior
- 안드로이드
- BOJ
- onLayout
- HTTP
- Android
- DataBinding
- onMeasure
- kotlin
- lifecycle
- CustomView
- AppBarLayout
- Coroutine
- hilt
- CollapsingToolbarLayout
- 알림
- LiveData
- sqlite
- Today
- Total
목록Android (111)
개발일지

Dialog Activity나 Fragment과 다른 작은 화면의 창입니다. 특정 작업전에 입력을 받거나 알람용도로 쓰입니다. DatePickerDialog 달력에서 날짜를 선택하여 Listener를 통해 값을 받을 수 있다. private fun initOnDatePicker() { binding.setOnDatePicker { val calendar = GregorianCalendar() DatePickerDialog(requireContext(), { dialog, year, month, dayOfMonth -> binding.result = """ Dialog : ${dialog.id} Event : ${SimpleDateFormat.getDateInstance().format(GregorianC..

ViewModel with SavedStateHandle ViewModel은 UI Data를 안전하게 보관하는 방법의 하나입니다. onSavedInstaceState()를 사용하지 않고 데이터를 쉽게 저장/복원 할 수 있고 메모리에 저장하기 때문에 SavedStateHandle에 비해 빠릅니다. 하지만 메모리에 저장하기 때문에 Android Framework에서 메모리를 회수하면 저장된 값을 잃습니다. 하지만 SavedStateHandle은 디스크에 직렬화하여 저장하기 때문에 값을 유지할 수 있습니다. => ViewModel에서는 이러한 문제점을 해결하기 위해 SavedStateHandle을 쉽게 조작할 수 있도록 도와줍니다. ViewModel SavedInstanceState Persistent Sto..
Hilt Component 삽입을 실행할 때 @InstallIn 주석을 사용하여 참조할 수 있는 구성요소를 설정하고 구성요소에 맞는 대상에서만 삽입할 수 있다. Hilt Component 인젝터 대상 ApplicationComponent Application ActivityRetainedComponent ViewModel ActivityComponent Activity FragmentComponent Fragment ViewComponent View ViewWithFragmentComponent @WithFragmentBindings 주석이 지정된 View ServiceComponent Service Hilt Component Lifetimes Hilt는 Hilt Component별 Android Cla..

Hilt Module 생성자를 사용할 수 없는 Class를 주입해야 하는 경우 @Inject 생성자를 정의할 수 없습니다. (Interface, Builder를 통해 생성되는 Class, 외부 라이브러리 클래스 등) => Hilt Module을 통해 Class를 어떻게 얻는지 정의하여 의존성을 주입할 수 있습니다. @Module, @Installin @Module로 지정된 Class는 Hilt에게 인스턴스를 제공하는 방법을 알려줍니다. @Module로 지정된 Class는 @Installin을 지정하여 각 모듈이 어떤 Scope에서 사용되는지 알려야 합니다. @Provides 외부 라이브러리에서 제공되거나 Builder 패턴으로 제공되는 경우 @Provides를 통해 인스턴스를 제공하는 방법을 알려줄 수 ..

Hilt 기존의 Dagger2를 Android의 구조적으로 맞게 기능을 추가한 라이브러리이다. DI를 도와주며 Annotaion을 통해 보일러 플레이트 코드를 제거하고 쉽게 사용할 수 있다. DI (Dependency Injection) Android뿐만 아니라 프로그래밍에서 널리 사용되는 기법이고 다양한 이점이 있다. 코드의 재사용성 리팩토링 용이성 테스트 용이성 클래스에서 다른 클래스를 참조하는 방법은 크게 3가지가 있습니다. (Car와 Engine을 예시로) 1. 클래스에서 필요한 종속 클래스를 인스턴스화하는 방법 class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val c..

QR Code QR Code란 흑백으로 이루어진 Matrix에 정보를 포함한 코드이다. zxing-android-embedded 라이브러리를 사용하여 Android에서 쉽게 QR Code를 읽고 만들 수 있다. Dependency dependencies { // QR implementation 'com.journeyapps:zxing-android-embedded:3.6.0' } Generate 한국어를 지원하기 위해 ISO 8859-1코드를 사용하여 포맷팅한다. object BindingAdapter { @JvmStatic @BindingAdapter("qrCode") fun setQRCode(view: ImageView, qrCode: String?) { if (qrCode == null) { vie..

Retrofit2 Android HTTP 통신에는 URLConnection, Volley Retrofi2 등이 존재합니다. Retrofit2는 동기/비동기 등 다양한 기능을 지원하고 Annotation을 통해 코드가 간결하다는 장점이 있습니다. Dependency gson : Response를 Google의 Gson을 통해 DTO로 매핑시켜줄 때 사용한다. scalars : String형식으로 Response를 받을 때 사용한다. dependencies { // Retrofit implementation 'com.squareup.retrofit2:converter-gson:2.6.2' implementation 'com.squareup.retrofit2:converter-scalars:2.6.2' imp..

Volley Volley는 2013년 구글에서 발표한 Android HTTP 라이브러리 입니다. (JavaScript에 Ajax와 매우 비슷한 구조이다.) 기존의 URLConnnection은 Request를 위한 기본 설정과 Thread를 만들어서 처리하는 보일러 코드가 필요하다는 단점이 있습니다. Volley는 Callback으로 Response와 Error를 쉽게 처리할 수 있고, 비동기/동기 등 다양한 기능을 지원합니다. Volley는 간단한 HTTP 통신에는 적합하지만. 모든 응답을 메모리에 유지하기 때문에 대용량의 전송은 적합하지 않습니다. Dependency dependencies { // Volley implementation 'com.android.volley:volley:1.2.0' } ..