·🐸 Android
0. This is how it happened.. 네이티브 서비스 앱을 처음 배포하고 마주친 케이스이다. 앱을 삭제하고 다시 설치하였는데도 데이터가 남아있는 현상이 발현됐다. ( ˃̣̣̥᷄⌓˂̣̣̥᷅ ) 회사 서비스의 앱은 앱 초기 실행시 shared preference 데이터로 로그인 뷰로 갈지, 자동 로그인 되는 것처럼 메인 뷰로 진입할지를 결정하는데 이 shared preference의 데이터가 기기에 남아있는 경우였다. 앱을 삭제하고 다시 설치하면 로그아웃 된 것처럼 로그인 페이지로 가는 것이 아니라 바로 메인뷰로 이동하는 현상이었다. 앱을 지우고 다시 깔아도 기존의 유저가 사용하는 데이터가 백업되었다가 복원되어 기존의 데이터를 사용할 수 있게 되는데 안드로이드 메니페이스의 속성중 하나로 all..
·💤 RxJava
Scheduler로 Multi Thread 관리하기 Rx를 이용하면 여러 스레드를 사용해 어떤 작업을 수행하는 도중에도 다른 작업을 실행하는 비동기작업을 할 수 있다. Rx에서는 비동기 처리를 수행하는데 필요한 API를 제공하므로 기존에 구축한 비즈니스 로직에 영향을 주지 않고도 데이터를 통지하는 생산자 측의 처리와 데이터를 받는 측의 처리를 분리하며 서로 다른 스레드에서 실행할 수 있다. 즉 생산자가 무엇을 하더라도 소비자가 받은 데이터의 범주에서만 작업을 하게 된다면 비동기로 쉽게 전환하며 교체할 수 있다. 또한 용도별로 적절히 스레드를 관리하는 클래스를 제공해 직접 스레드를 관리해야 하는 번거로움도 없다는 편리함이 있다. Rx에서 제공해주는 operator들을 적절히 사용하여 스레드 관리를 해보자...
·🐸 Android
0. Intro ⚡️ the gallery widget doesn't support multiple selection by default 안드로이드에서는 기본적으로 기기내 공유 저장소의 미디어 파일에 액세스했을 때 미디어 파일을 여러 개 선택하는 것이 가능하지 않다. api 18이상부터는, Intent.ACTION_GET_CONTENT을 이용하여 image/*로 setType을 한 다음 Intent.EXTRA_ALLOW_MULTIPLE을 설정하면 가능하다지만, 실제로 적용시켜봤을 때는 파일 저장소에는 적용이 되었지만 갤러리에는 적용되지 않았고 그 이하의 api 에서도 적용이 안된다는 점이 있다. 또한 Android 13부터는 Photo Picker을 제공하여 모든 미디어 라이브러리를 가져올 필요없이 사진..
·💻 CS
Rx..너는 안드펫 ♡ 0. 왜 Reactive? 리액티브(Reactive) 라는 키워드는 왜 중요해졌을까? 페이스북에서 리액트(React) 라이브러리를 만든 이유도 지속적으로 데이터가 변화하는 대규모 애플리케이션을 구축하기 위함에서 출발했다. 데이터가 변경이 되면 리액트는 가상 DOM을 변경하고 이전의 가상 DOM과 비교하여 변경된 부분만 실제 DOM에 적용한다. 이러한 리액트의 렌더링 방식은 애플리케이션의 규모가 클수록, 데이터의 변경이 많을수록 더 큰 힘을 발휘하고 이러한 큰 장점은 현재 프론트엔드의 가장 사랑받는 기술 중 하나가 된 이유이다. 모바일 기기의 증가나 시스템에서 처리하는 이벤트나 데이터가 극단적으로 증가하면서 사용자의 요청에 바로 반응하여 응답하고 언제 올지 모르는 데이터나 지속적으로..
·💻 CS
0. 들어가며.. 안드로이드 앱 개발을 한다면 필수불가결하게 사용하는 반응형 라이브러리인 RxJava를 쓰고 있던 차, 그래서 ReactiveX가 왜 좋은데? 라는 질문으로 시작된 글. 반응형 프로그래밍의 단짝 함수형 프로그래밍과 이를 포괄적으로 아우르는 선언형 프로그래밍에 초점을 맞춰 기술한다. 그리고 선언형 프로그래밍과 비교대상이 되는 명령형 프로그래밍과는 무슨 차이가 있고, 선언형 프로그래밍이 무엇이 더 우월한지 써보고자 한다. 1. Statements VS Expressions 먼저 쉬운 예시로 명령형과 선언형 프로그래밍에 대한 대략적인 컨셉을 익혀보자. 서브웨이에 가서 우리가 주문할 때의 모습이다. '빵은 허니오트에 속은 파주시고, 치즈는 아메리칸 치즈 넣고 데워주세요. 야채는 피클, 할라피뇨 ..
·🐸 Android
앱을 처음 실행했을 때 마주하는 화면부터 Activity를 이해하고, 안드로이드의 물리 키에 따라 액티비티들이 어떤 순서로 작동하는지에 대해 알고자 정리하는 글 (feat.백 버튼, 홈 키, 최근 앱 키) 0. When launching App.. 안드로이드 앱을 실행했을 때, 우리의 눈에는 먼저 하나의 화면이 보여질 것이다. 이것을 우리는 Activity가 화면에 활성화되고 있는 것으로 부르기로 했다(..). 우리가 웹에서 윈도우창을 여러개 띄우듯 많은 Activity들을 띄우고 이동할 수 있지만 모바일 애플리케이션의 특성상 한 화면에는 한 개의 액티비티만 보이며 화면 단위로 움직이며 사용자에게 보여진다. (Android 7.0 부터는 화면 분할을 할 수 있는 멀티 윈도우 환경을 지원한다.) 처음 실행..
·🐸 Android
내가 맡은 세 개의 플랫폼 중에 한 개는 웹뷰, 한 개는 하이브리드 앱, 마지막은 네이티브앱 다양한 앱의 형태를 가지고 있다. 이 중 웹뷰나 하이브리드앱을 개발할 때는 웹과 앱간의 통신이 필수불가결하다. 웹과 네이티브 앱 간의 상호작용을 위한 인터페이스를 설계하는 것부터 작동원리를 알아본다. 아래의 예시들은 웹앱일 경우의 예시들이다. 1. JavaScript 를 실행시키는 함수 : evaluateJavaScript 로드된 웹 페이지의 JavaScript 코드를 실행시키고 싶을 경우이다. 예를 들어 모바일을 이용하는 유저가 다이나믹링크를 클릭시 앱을 실행시킴과 동시에 특정 페이지로 이동해야 하는 상황이다. 다이나믹링크가 앱까지는 실행시켜주겠지만 웹뷰안에서 특정 페이지를 이동하는 것은 웹의 영역이다. 이 때..
·💤 RxJava
서버 응답을 받는 도중 통신 모델로 선언한 프로퍼티 값의 타입을 잘못 지정했는데도 통신에 성공하고, 프로퍼티 값에 접근하는데까지 에러가 나지 않았던 경우를 마주했다. Retrofit이 ConverterFactory에서 에러를 잡아주는 것인지 Retrofit과 같이 쓰고 있는 Rxjava Error Handling 클래스에서 에러를 흘려주는 것인지 궁금증에서 시작된 이번 글은 Retofit 부터 RxJava, 직렬화와 역직렬화까지 마인드맵처럼(..) 알아본다. 1. Retrofit Retrofit은 HTTP API를 자바 인터페이스 형태로 변환해 안드로이드 개발 시 API를 쉽게 호출할 수 있도록 지원하는 라이브러리이다. 서버와 응답하는 데이터 형식은 JSON 형식이기에 Retrofit에서 Call 객체 ..
·💎 Kotlin
자바스크립트를 먼저 공부했던 나에게 코틀린의 데이터 타입 중 가장 흥미로웠던 타입 중 하나는 '숫자' 형이었다. 자바스크립트는 number 라는 데이터 타입만 존재하지만, kotlin은 같은 숫자라도 메모리에서 차지하는 공간의 크기에 따라 서로 다른 자료형으로 구분된다. 서로 다른 자료형으로 데이터 타입들이 세분화되어있다는 뜻은 프로그래머에게 어떤 자료형을 쓸지 선택지를 준 뜻이다. 따라서 프로그래머의 설계에 따라 적절한 자료형의 할당으로 어떻게 메모리 관리를 메모리의 낭비를 최소화할 수 있다. 언어에 따른 메모리 관리는 어떻게 하는지에 대해 궁금증이 생겼고, 여기서 출발하여 현재 쓰고 있는 코틀린의 데이터 타입까지 살펴본다. 1. 언어에 따른 메모리관리 어떠한 언어든 메모리라는 컴퓨터의 자원에 접근하고..
·🐸 Android
기존 https://itssweetrain.netlify.app/ 에서 티스토리로 이전하여 새롭게 시작합니다!
안드로보이
안드로보이의 개발일지