| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- DataBinding
- WebView
- Java
- 안드로이드 카카오 로그인
- 안드로이드
- Android 12 대응
- coroutine
- Android ViewPager2
- Android Jetpack
- 카카오 알고리즘
- Kotlin
- Android Navigation
- 프로그래머스 알고리즘
- Android
- Android Interceptor
- 습관만들기
- 영어독립365
- 알고리즘 자바
- android recyclerview
- 66챌린지
- Android 12
- 영어공부
- MVP Architecture
- Android WebView
- OkHttp Interceptor
- 안드로이드 갤러리 접근
- Kotlin FCM
- scope function
- 코틀린 코루틴
- Android ProgressBar
- Today
- Total
목록분류 전체보기 (146)
나미래 Android 개발자
개요 앱에서 딱 한번만 생성되고 전역에서 사용할 객체가 필요하다면 우린 Singleton Pattern을 사용하면 된다. Singleton Pattern은 해당 클래스에서 오직 하나의 객체만을 사용하도록 제한하는 것이다. 그래서 Singleton Pattern을 구현하기 위해서는 Singleton Class을 먼저 만들어야 한다. 이번 글에서는 Kotlin을 이용해 Singleton Class 만드는 법을 알아 보도록 한다. Singleton Class Singleton Class 는 오직 하나의 객체만이 생성되고 어디서나 사용될 수 있는 클래스이다. NetworkService, DatabaseService 등 오직 하나의 객체만 필요한 경우에 사용된다. Retrofit2 Singleton 예제 Sing..
개요 모바일에서 HTTP API 통신을 할 때 사용하는 라이브러리이다. REST 기반의 웹서비스를 통해 JSON 구조를 쉽게 가져오고 업로드할 수 있다. HTTP API를 Interface로 구현할 수 있다. interface GitHubService { @GET("users/{user}/repos") fun listRepos( @Path("user") user: String ) } Retrofit class는 위에서 정의한 GitHubService Interface의 구현체를 생성한다. val retrofit = Retrofit.Builder() .baseUrl("https://api.github.com/") .build() val service = retrofit.create(GitHubService..
SwipeRefreshLayout 개요 Swiperefreshlayout를 이용하면 스와이프(드래그)하여 새로고침 UI 패언틀 구현할 수 있다. 앱 화면을 위에서 아래로 드래그 하면, delayMillis(1.5s) 동안 새로고침 UI 패턴이 동작한다. 새로고침이 동작하는 동안은 텍스트 내용이 사라졌다가 완료되면 다시 보여진다.실행화면 프로젝트 셋팅 viewBindnig viewBinding{ enabled true }위의 코드를 build.gradle(:app) 파일의 android{ } 속성 값으로 아래 코드와 같이 삽입한다. plugins { id 'com.android.application' id 'kotlin-android' } android { compileSdk ..
Retrofit2 개요 모바일에서 HTTP API 통신을 할 때 사용하는 라이브러리이다. REST 기반의 웹서비스를 통해 JSON 구조를 쉽게 가져오고 업로드할 수 있다. HTTP API를 Interface로 구현할 수 있다. public interface GitHubService { @GET("users/{user}/repos") Call listRepos(@Path("user") String user); } Retrofit class는 위에서 정의한 GitHubService Interface의 구현체를 생성한다. Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .build(); GitHubService ser..
LiveData 개요 LiveData는 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식하는데 즉, Activity, Fragment, Service 등 다른 앱 구성요소의 LifeCycle고려한다. LifeCycle 을 인식하기 때문에 LiveData는 active lifecycle 상태에 있는 앱 구성요소 관찰자만 업데이트한다. LiveData의 이점 UI와 Data 상태값 일치 LiveData는 Observer Pattern을 따르기 때문에, 데이터가 변경될 때 Observer 객체에 알린다. 개발자는 구독된 객체가 변경되었을 때, UI를 업데이트하는 방식으로만 고려하면 된다. 그러므로 데이터가 변경될 때 마다 UI를 어떻게 업데이트 시킬 지 ..
Jetpack.ViewModel ViewModel 사용 이유 UI Controller의 데이터를 캡슐화하여 앱 구성이 변경되어도 데이터를 유지하기 위함이다. UI Controller 부하 원인: UI Controller에 DB나 Network에서 데이터 로드를 요구하는 경우. 결과: UI를 관리하는 클래스가 너무 키지게 된다. UI Controller에 과도한 책임을 할당하면 다른 클래스로 작업이 위임되지 않고, 단일 클래스가 혼자서 앱의 작업을 모두 처리하려고 한다. 또한 이런 방법으로 UI Contorller에 과도한 책임을 할당하면 테스트가 훨씬 더 어려워진다. UI Controller 로직에서 View 데이터 소유권을 분리하는 방법이 쉽고 효율적이다. 데이터가 복잡해지면 데이터 로드만을 담당하는 ..
Jetpack.ViewModel과 LiveData를 이용한 옵저버 패턴 개요 LiveData와 ViewModel 그리고 Observer Pattern을 이용하여 화면에 보여지는 TextView(UI)의 값을 변경하는데 있어서 데이터 처리 로직과 UI 로직을 분리한다. EditText에 값을 입력하여 더하기버튼 또는 빼기버튼 클릭 시, 산수 연산(데이터 처리 로직)을 ViewModel에서 처리하고 UI Controller(View)에서는 연산 값을 Observing하여 ViewModel에서 View에 UI 처리를 요청하지 않고 View단에서 자동으로 UI를 업데이트 하여 계산된 값을 보여준다. 실행 영상 build.gradle(Module) : ViewBinding 설정 build.gradle(Module..
소수 찾기 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수..
