본문 바로가기

반응형

Android 개인공부

Coroutine 1부 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴 코루틴은 Kotlin만의 고유한 개념이 아니며 다른 언어에서도 지원하고 있다. Co: 함께 routine : 규칙적으로 하는 일의 통상적인 순서나 방법, 일반적으로 빈번히 사용할 수 있는 프로그램 또는 그 일부 장점 경량 : 코루틴은 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있다. 메모리 누수 감소 : 구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행 취소 지원 : 실행 중인 코루틴 계층 구조를 통해 자동으로 취소가 전달 일반적인 서브 루틴 fun main() { val addValue = plusOne(value) } fun plusONe.. 더보기
MVVM 디자인 패턴중 하나 디자인 패턴이란 개발 과정에서 공통으로 발생하는 문제를 해결하기 위해 사용되는 패턴 디자인 패턴을 사용해야 하는 이유 수정에 열려있는 구조로 유지보수에 들어가는 비용이 줄어듬 언어에 제약을 받지 않고 사용 가능 MVVM 패턴은 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하는 것이 목적 테스트, 유지 보수, 재사용이 쉬워진다는 장점 View는 ViewModel을 알지만, ViewModel은 View를 알지 못한다. ViewModel은 Model을 알지만, Model은 ViewModel을 알지 못한다. 이런 구조를 통해 ViewModel과 Model이 View로부터 독립적인 형태를 만들어 UI로부터 비즈니스 로.. 더보기
Repository Pattern 정의 : 데이터 출처(로컬DB, 서버 API 응답)와 관계 없이 동일 인터페이스로 데이터에 접속할 수 있도록 하는 디자인 패턴 발생배경 비즈니스 로직은 프로그램의 핵심이 되는 요소이며 보통 데이터베이스나 웹서비스 등의 데이터 저장소에 접근하게 되는데 이 과정에서 여러 문제가 발생(중복코드, 오류 발생 가능성의 코드, 오타, 유닛 테스트 어려움) 함에 따라 몇가지 요구사항이 발생 비즈니스 로직과 데이터 레이어를 분리 중앙 집중 처리 방식을 통해 일관된 데이터와 로직을 제공해야 함 특징 데이터가 있는 여러 저장소를 추상화하여 중앙 집중 처리 방식을 구현 데이터를 사용하는 도메인에서는 비즈니스 로직에만 집중할 수 있음 ex) ViewModel에서는 데이터가 로컬 DB에서 오는지, 서버 API 응답값에서 오는지.. 더보기
Android Custom Progress Dialog 안드로이드 오레오(8.0)에서 프로그래스 다이얼로그가 Deprecated 되었다. 이유인 즉슨 ProgressDialog가 모달 대화상자기 때문에 사용자와의 상호작용성을 떨어트리기 때문이라고 한다. 잘 써먹던 건데 이래되버리니 그냥 내가 만들어서 라이브러리로 만들어 놓고 써야겠다 싶어서 만들고 공유한다. https://github.com/welcome2c/LottieProgressDialo welcome2c/LottieProgressDialog Custom Dialog. Contribute to welcome2c/LottieProgressDialog development by creating an account on GitHub. github.com - Top level build.gradle 에 추가 .. 더보기
AAC LifeCycles Lifecycles는 라이브러리 이름대로 생명주기 모니터링을 도우며 LifecycleOwner 와 LifecycleObserver로 구성되어 있다. LifecycleOwner는 getLifecycle() 메서드에서 자신의 생명주기를 담은Lifecycle 객체를 반환하는 인터페이스이다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // getLifecycle() lifecycle.addObserver(LifeCycleLogger()) } } Lifec.. 더보기
Kotlin? 코틀린은 젯브레인즈가 만든 통계적 형식의 오픈소스 프로그래밍 언어이다. 코틀린이란 이름은 러시아 상트페테르부르크 근처에 있는 코틀린 섬에서 유래되었으며 JVM에서 매끄럽게 동작하는 코드를 만들 수 있게 해준다. 코틀린과 자바의 대표적인 차별화된 부분이라면 자바에서는 변수를 선언할 때 타입과 기본값을 설정해야 하지만 코틀린에서는 변수의 타입과 값을 지정하지 않은 경우에도 그것을 판단 하기 위해서 코틀린이 추론을 사용할 수 있도록 하였다. 코틀린의 대표적인 장점들은 보통 다음과 같이 소개된다. · Null safety - 코틀린은 nullable과 non-nullable 개념을 만들어, null에 안전한 프로그램을 만들 수 있게 도와준다. 그래서 코틀린만 사용한다면 Null Pointer Exception .. 더보기
코틀린 let, with, apply, also, run Scope Functions 범위 지정 함수 - 수신 객체, 수신 객체 지정 람다 두가지 구성 요소를 가지는 함수. 수신 객체와 수신 객체 지정 람다는 어떤걸 의미할까? ex) Human("Kim", 30, "Seoul").let { println(it) it.moveTo("Busan") it.incrementAge() println(it) } 위의 코드에서 Human 객체를 리시버, let 다음의 { } 부분을 람다함수라고 한다. 해당 람다 함수에서 Human 객체에 접근할 수 있다. 해당 함수들을 이용하면 객체에 접근하는 방법을 쉽게 해주고 코드가 간결해지고 가독성이 높아지는 장점이 있다. 1. with() inline fun with(receiver: T, block: T.() -> R): R { .. 더보기
FCM 푸쉬메시지 테스트 앱 FCM 푸쉬를 Data타입으로 전송하는 테스트 앱. Token, Group, Topic으로 전송이 가능하다. Firebase Class 파일에서 본인의 FCM 서버키를 설정해주면 된다. https://github.com/welcome2c/FirebaseSend 더보기

반응형