본문 바로가기

반응형

Android

Coroutine 3부 코루틴은 Dispatcher.Default와 같은 멀티 스레드 디스패쳐를 통해서 동시에 수행되도록 만들수 있다. 이러한 상황에서 주로 발생하는 문제는 동기화 이슈가 있으며 일반적인 멀티 스레드에서의 동기화 해결책들과 비슷하지만 코루틴 고유의 것들도 존재 (Actor) Volatile [공유객체] 하나의 객체를 여러 개의 쓰레드가 함께 사용하거나 공유한다는 것을 의미 ex) 놀이터에 그네가 하나 있고, 어린 아이들은 셋 있다. 이런 상황에서 그네를 [공유 객체], 아이들을 [Thread]라고 말할 수 있다. 클래스의 멤버변수는 heap 메모리에 존재하므로 스레드가 공유하여 접근할 수 있으며 이때 각 스레드는 속도향상을 위해 메인 메모리에 접근해서 값을 가져가는게 아닌, 캐시에서 변수값을 읽어가며 쓰기 또한.. 더보기
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 에 추가 .. 더보기
FCM 푸쉬메시지 테스트 앱 FCM 푸쉬를 Data타입으로 전송하는 테스트 앱. Token, Group, Topic으로 전송이 가능하다. Firebase Class 파일에서 본인의 FCM 서버키를 설정해주면 된다. https://github.com/welcome2c/FirebaseSend 더보기
Gradle 동일 모듈 충돌시 해결 회사프로젝트 진행중 DataBinding 적용을 위해 gradle에 datBinding을 추가했다. 추가 후 앱실행 해당 모듈들을 추가해도 같은 에러가 발생하여 한숨만 나왔다. 추가한 라이브러리가 워낙 많아 어디에서 의존성 문제가 나온지 알기가 힘든 상황이라 골치가 아팠다. 이리저리 구글링한 결과 원하는 해답을 찾았다. configurations.all { resolutionStrategy { failOnVersionConflict() cacheDynamicVersionsFor 0, 'seconds' cacheChangingModulesFor 0, 'seconds' resolutionStrategy.force 'com.google.guava:guava:28.1-jre' } } 해당 키워드를 이용하여 전체.. 더보기
Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1] class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i <.. 더보기

반응형