0. RxJava를 공부하게 된 계기🐥🐥🐥 코딩을 하다보면 여러 난관에 부딪히게 된다. 알고 있는 지식의 범위 안에서 쉽지만 오래걸리고 비효율적인 방법으로 처리가 가능했으나, 🌟추후에 규모 있는 프로젝트를 진행하게 된다면 이 부분에 있어 불편함을 겪게 될 것이라 생각했다🌟 ex) 콜백 지옥 물론 다른 여러 회사들이 요구하는 대표적인 기술 스택 중 하나라서 공부를 시작한 것도 있다. 그래서 더 궁금하기도 했고. 이게 대체 뭐하는 녀석이길래 다들 그렇게 사용할까? 1. RxJava란 무엇인가? 그에 앞서, 리액티브 프로그래밍에 대해 알고 가야 한다. 리액티브 프로그래밍이란, "데이터의 흐름과 전달에 관한 프로그래밍 패러다임"이다. p.s 우리가 흔히 알고 있는 객체지향 프로그래밍도 하나의 프로그래밍 패러다임..
오늘 "아키텍처를 알아야 앱 개발이 보인다" 라는 책을 공부하던 중, 한가지 이슈에 직면했다. ViewModel 파트 실습중이였는데, gradle 설정을 완료하였음에도 ViewModel 생성을 위한 ViewModelProvider 클래스가 생성되지 않는 이슈였다. 수정을 거쳐도 이미 deprecated된 ViewModelProviders가 나오거나 아예 엉뚱한 HasDefaultViewModelProvideFactory 였나? 뭔가 하는 이상한 클래스가 나왔다. 아래 코드는 developers에서 제공하는 최신 버전의 gradle이다. dependencies { def lifecycle_version = "2.6.0-alpha01" def arch_version = "2.1.0" // ViewModel ..
오늘은 많은 사람들이 애용하는 디자인패턴 중 하나인 Repository 패턴이다.1. Repository Pattern이란?ViewModel(Domain layer)과 Data 저장소 사이인 Data layer에 중간 계층(Repository)을 만들어 데이터의 출처에 구애받지 않고 동일한 인터페이스로 접근할 수 있게 만드는 패턴 여기서 동일한 인터페이스로 접근한다 라는 말의 뜻이 잘 이해가 되지 않을 수 있다. 간단한 예시를 들어보겠다. A라는 내부 DB에서 데이터를 가져오고, 추가적으로 B라는 외부 출처에서도 데이터를 가져와야하는 상황이다. 여기서 우리가 A와 B 둘 모두의 데이터에 접근 및 사용하기 위해서는 A라는 내부 DB에 대한 처리 + B라는 외부 DB 이 둘 모두에 대한 작업이 필요할 것이다..
프로젝트를 하다보면 처음보는 오류에 길게는 몇시간 동안 매달리는 경우가 있다. 그럴때마다 너무 답답해서 기억하려고 포스팅을 남긴다 ㅎㅎ.. 1. INSTALL_FAILED_DOWNGRADE_VERSION -> 해당 디바이스에 최신 버전의 어플리케이션이 존재하므로, 더 진행하기를 원한다면 기존 어플리케이션을 제거해야합니다. 저 말 그대로, 기본 설정에서 안드로이드 스튜디오를 돌리고 있다면, 해당 오류를 심심치 않게 만나볼 수 있다. 난 원래 gradle의 version_code를 매 컴파일때마다 변경하는 방법으로 버텼는데, 너무 귀찮고 매번 sync하는 시간도 길어 번거로웠다. 2. 해결 방법 (1) Android studio에서 상단 메뉴바의 "Edit Configurations" 클릭 (2) Insta..
1. &&, || A && B -> A가 거짓인 경우에 B는 확인하지 않음 ( 둘 다 True인 경우에 성립하므로 ) A | | B -> A가 참인 경우에 B는 확인하지 않음 ( 둘 중 하나만 True여도 성립하므로) 2. &, | A & B -> A가 거짓이더라도 B를 확인함 A | B -> A가 참이더라도 B를 확인함 3. 결론 &, | 는 논리 연산자 + 비트 연산자의 역할을 수행한다. ( 비트 마스킹에도 사용된다 ) &&, || 는 단순 논리 연산자의 역할만을 수행한다. ( 흔히들 사용하는 조건문에서 ) 우리는 일반적으로 &&, || 와 같은 논리 연산자의 역할로 사용하기에 쉽게 놓칠 수 있는 부분이다. 사소한 차이라도 알고 있다면 더 효율적인 코딩이 가능하므로 꼭 기억해두자.
얼마전에 한 테크블로그에서 Legacy에 대해 포스팅한 글을 읽었다. 다른 분야 못지 않게 Legacy에 대해 민감할 수 밖에 없는 안드로이드 개발자로서, 오늘은 Legacy에 대하여 이야기해보고자 한다. Legacy는 종종 게임, 드라마/영화, 영어 공부 책에도 심심치 않게 등장하는 단어이기 떄문에 그리 생소하게 느껴지는 단어는 아닐 것이다. # 사전적 의미 Legacy 1. (죽은 사람이 남긴) 유산 (=inheritance) 2. (과거의) 유산 출처: 네이버 영어 사전 # 개발자에게 Legacy란? Legacy system - 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 말한다. - 더 이상 쓰이지 않더라도 현대의 기술에 영향을 주는 경우도 포함한다. # 안드로이드 개발자에게 Legac..
🎈 안드로이드 서비스 오늘 알아볼 것은 안드로이드 서비스에서 주로 사용되는 세가지 시작 방법에 대한 정보입니다. START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENT가 있으며, 각각에 대해 자세히 알아보겠습니다. ✔️ START_STICKY 서비스가 강제로 종료되었을 때 시스템이 자동으로 다시 시작하도록 하는 방식입니다. 서비스가 다른 추가적인 작업 없이도 계속 실행되어야 하는 경우에 주로 사용됩니다. 시스템에 의해 재시작되면 onStartCommand()가 호출되지만 Intent는 Null이 전달됩니다. ✔️ START_NOT_STICKY 서비스가 강제로 종료되었을 때 시스템이 자동으로 다시 시작하지 않도록 하는 방식입니다. 이 방식은 서비스가 특정 작업을 ..
안드로이드에는 Activity, Service, Broadcast Receiver, Contents Provider라는 4대 컴포넌트라는 것이 존재한다. 서로 알아서 소통하면 얼마나 좋을까? 하지만 그렇지 않기 때문에 개발자가 오작교를 놔줘야한다.. 🤢 여기서 오작교를 안드로이드에서 Intent라고 하는데, 오늘은 이 Intent의 효율적인 사용을 위한 얘기를 해보려고 한다. Intent intent = new Intent(MainActivity.this, SubActivity.class); startActivity(intent); 매우 기초적인 명시적 Intent의 사용 예시이다. 전달할 데이터가 없거나 간단하기 때문에 별도의 작업이 필요하지 않다. 하지만 한 Activity에서 다른 Activity에..
이미지 파일 확장자에는 두 가지 대표적인 친구들이 있다. 한명은 PNG, 다른 한명은 JPG인데 둘이 이름만 다른게 아니다. 별거 아니라고 생각할 수 있지만 신기하고 새로이 알게 된 사실이라 기록으로 남긴다. 🌟이미지 파일🌟 이미지 파일에는 다양한 확장자 종류가 있다. JPEG, GIF, BMP, PNG 등등.. JPG는 JPEG안에 포함되어 있다고 한다. 그 중에서 오늘 알아볼 친구들은 JPG와 PNG! 🌟 JPG 🌟 JPG는 JPEG 압축 방식을 사용한 이미지 파일 확장자이다. JPEG 압축이란, Joint Photographic Experts Group 이라는 단체에서 이미지 압축 표준으로 규정한 포맷인데 해당 방식은 "손실 압축" 방법을 사용한다. > 손실압축 1. "이미지"의 역할을 할 수 있을..