전체 글 411

리액티브 연산자 - 기초 (map, filter, reduce)

map() 함수 -입력값을 어떤 함수에 넣어서 원하는 값으로 변환하는 함수. String을 String으로 변환할 수도 있고, String을 Integer나 다른 객체로도 변환할 수 있음 map() 핵심 -내가 원하는 값을 ‘어떤 함수’ 에 넣는 것 -어떤 함수 : Function 인터페이스 객체 / 람다 표현식 -원하는 함수를 정의할 수 있느냐가 관건 flatMap() 함수 -map()을 좀 더 발전시킨 함수 -결과가 Observable로 나옴 -flatMap() => 일대다 or 일대일 Observable 함수 map() => 일대일 함수 RxJava에서 여러 개의 데이터를 발행하는 방법은 Observable 밖에 없음 (배압(back pressure)을 고려하면 Observable 대신에 Flowa..

안드로이드/Rx 2021.03.28

깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS)

1. 깊이 우선 탐색 (DFS, Depth-First Search): 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 깊이 우선 탐색의 개념 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식을 말합니다. 예를 들어, 미로찾기를 할 때 최대한 한 방향으로 갈 수 있을 때까지 쭉 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 그 갈림길부터 다시 다른 방향으로 탐색을 진행하는 것이 깊이 우선 탐색 방식이라고 할 수 있습니다. 2. 너비 우선 탐색 (BFS, Breadth-First Search): 최대한 넓게 이동한 다음, 더 이상 갈 수 없을 때 아래로 이동 너비 우선 탐색의 개념 루트 노..

코딩/알고리즘 2021.03.28

MVC, MVP, MVVM 장단점

1. MVC MVC 패턴은 Model + View + Controller를 합친 용어입니다. 장점 Model과 View의 분리됨. 구현하기 가장 쉽고 단순함. 개발기간이 짧아짐. (안드로이드에서의 장점) 단점 MVC 패턴의 단점은 View와 Model 사이의 의존성이 높다는 것입니다. View와 Model의 높은 의존성은 어플리케이션이 커질 수록 복잡하지고 유지보수가 어렵게 만들 수 있습니다. 2. MVP MVP 패턴은 Model + View + Presenter를 합친 용어입니다. Model과 View는 MVC 패턴과 동일하고, Controller 대신 Presenter가 존재합니다. 장점 MVP 패턴의 장점은 View와 Model의 의존성이 없다는 것입니다. Model과 View 간의 결합도를 낮추면..

안드로이드 2021.03.28

RxKotlin, RxAndroid란?

Rx란? Reactive Programing 입니다. 리액티브 프로그램은 프로그램 자신의 주변 환경과 끊임없이 상호작용을 하는데 프로그램이 주도하는 것이 아니라 환경이 변하면 이벤트를 받아 동작합니다. 명령형 프로그래밍과 다르다! 명령형 프로그래밍(Imperative programming) – 작성된 코드가 정해진 순서대로 실행됨. 리액티브 프로그래밍(Reactive Programing) – 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 메서드가 업데이트 되는 방식. 사용 이유 1. 자바가 동시성 처리를 하는데 번거로움이 있다. 다수의 비동기실행흐름을 생성하고 결과를 취합하여 최종리턴하는게 어렵다. -> completableFuture 도 가능하나 당시에는 제공되지 않았다. 2. 비..

안드로이드 2021.03.26

Multi Thread(멀티 스레드)

프로세스(Process) : 실행 중인 하나의 애플리케이션(애플리케이션인 Chrome 브라우저를 두 개 실행 시키면, 두 개의 Chrome Process가 생성된 것) 멀티 스레드(Multi thread) : 하나의 Process가 두 가지 이상의 작업을 처리할 수 있도록 하는 것. 멀티쓰레딩의 장점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리되어 코드가 간결해진다. 주의할점 멀티쓰레드 프로세스는 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(synchronization), 교착상태(deadlock)와 같은 문제들을 고려해서 신중히 프로그래밍 해야한다. 교착상태) 두 쓰레드가 자원을..

코틀린 & Java 2021.03.26

안드로이드 11 대응

1) Android 11 플랫폼에서 실행되는 모든 앱 개인정보 보호 Android 11에서는 사용자 개인정보 보호를 강화하기 위해 다음을 비롯한 변경사항과 제한사항이 도입되었습니다. 일회성 권한: 사용자에게 위치, 마이크 및 카메라 권한에 관한 추가 임시 액세스 권한을 부여하는 옵션을 제공합니다. 권한 대화상자 공개 상태: 반복적인 권한 거부는 '다시 묻지 않음'을 의미합니다. 데이터 액세스 분석: 앱 자체 코드와 종속 라이브러리 코드 모두에서 앱이 비공개 데이터에 액세스하는 위치에 관한 유용한 정보를 얻습니다. 시스템 알림 창 권한: 요청에 따라 앱의 특정 클래스에 SYSTEM_ALERT_WINDOW 권한이 자동으로 부여됩니다. 또한 ACTION_MANAGE_OVERLAY_PERMISSION 인텐트 작..

안드로이드 10 (Q) 대응

1) Android 10 플랫폼에서 실행되는 모든 앱 android.preference 라이브러리 지원 중단 Android 10부터 android.preference 라이브러리가 지원 중단됩니다. 개발자는 Android Jetpack의 일부인 AndroidX preference 라이브러리를 대신 사용해야 합니다. 이전 및 개발 지원용 추가 리소스는 업데이트된 설정 가이드와 함께 공개 샘플 앱 및 참조 문서를 확인하세요. 2) API 레벨 29 이상을 타겟팅하는 앱 Android 10(API 수준 29) 이상을 타겟팅하는 앱은 기본적으로 외부 저장소로 범위가 지정된 액세스 권한을 가지게 되고, 범위 지정 저장소가 부여됩니다. 이러한 앱은 외부 저장소의 앱별 디렉터리와 앱에서 만든 특정 유형의 미디어에만 액..

안드로이드 Pie 9.0 대응

Android 9(API 레벨 28)에서는 Android 시스템에 많은 변경사항이 도입됩니다. 1) Android 9 플랫폼에서 실행되는 모든 앱 백그라운드에서 센서 액세스 제한 Android 9에서는 백그라운드 앱이 사용자 입력과 센서 데이터에 액세스하는 능력을 제한합니다. Android 9이 실행되는 기기에서 앱이 백그라운드로 실행 중인 경우, 시스템은 다음과 같은 제한을 앱에 적용합니다. 앱이 마이크나 카메라에 액세스할 수 없습니다. 연속 보고 모드를 사용하는 센서(예: 가속도계 및 자이로스코프)는 이벤트를 수신하지 않습니다. 변경 시 또는 원샷 보고 모드를 사용하는 센서는 이벤트를 수신하지 않습니다. Android 9이 실행되는 기기에서 앱이 센서 이벤트를 감지해야 하는 경우, 포그라운드 서비스를..

Android 8.0 Oreo 대응

안드로이드 Oreo (8.0, API 26) 부터는 기존 버전과 다르게 두 가지의 섹션으로 나뉜다. 1. 앱의 Target 버전이 26 미만인데도 영향을 받는 모든 API 레벨을 대상으로 하는 앱 2. 앱의 Target 버전이 26 이상에서만 영향을 받는 Android 8.0를 대상으로 하는 앱 1) 모든 API레벨을 대상으로 하는 앱 백그라운드 제한 Android 8.0는 사용자 경험을 개선하기 위해 백그라운드에 실행되는 앱의 동작을 제한합니다. 이 백그라운드 제한은 두 가지의 제한 방법으로 나뉩니다. 백그라운드 서비스 제한: 앱이 유휴 상태일 경우 백그라운드 서비스의 사용이 제한됩니다. 이 기능은 사용자에게 잘 보이는 포그라운드 서비스 에는 적용되지 않습니다. 유휴 상태) 휴대전화의 전원이 켜진 상태..

안드로이드 7.0 Nougat 대응

Multi-Window 지원 Display Size 변경가능 Extended Doze 브로드퀘스트리시버 (CONNECTIVITY_CHANGE) 메니페스트에 static 하게 선언 불가 1. Multi_Window 지원 - 기존 삼성단말에서 지원하던 Multi-Window 가 누가 버전에서는 기본으로 기능이 탑재 됩니다. - 기존 삼성단말에서의 Multi_Window 와는 다르게 해당 앱 창이 포커스게 되지 않았을시에 onResume이 타지 않는다고 함. - 동영상 재생앱 경우 동영상 정지 이벤트를 onPause 가 아닌 onStop 에 하도록 권고 함 멀티 윈도우 막는 방법 - target>=24 : manifest에 android:resizeableActivity=false; 속성 추가 - target