본문 바로가기

분류 전체보기

(31)
Fragment Result API * 공식문서 번역 Fragment 간 데이터 전달을 위해 viewModel을 사용하기도 하고, interface를 사용하기도 하고 여러 방법을 사용하는데 Activity Result 같이 Fragment Result도 있다고 한다.. 언제생겼지..! 어떤경우 사용하나 일회성 데이터를 fragment간, 혹은 fragment 와 host activity간 전달하고 싶을 때 사용한다. Fragment 1.3.0-alpha04 이후부터 FragmentManager는 FragmentResultOwner를 구현한다. (상속받아) 이것은 Fragment Manager가 fragment 결과의 central store로 동작할수 있다는것을 의미한다. 이제 component간 직접 참조 하지 않고, fragment의 ..
[Android] RecyclerView and DiffUtil Recycler view는 말 그대로 view를 재활용 한다는 측면에서 일반 ListView 보다 부하가 적고 효율적으로 동작한다는것을 알 수 있다! 그렇다면 어떤식으로 View를 재활용하는지 동작 원리를 알아보고, DiffUtil을 사용하여 쉽게 RecyclerView를 사용하는 방법을 알아보자! Recycler View의 동작 원리 알아보기 RecyclerView 주요 컴포넌트 4가지 RecyclerView.Adapter : RecyclerView에 각 itemView에 바인딩을 한다. adapter는 각 item-view의 위치를 연관된 data 위치에 연결 하는 방법을 알고 있다. RecyclerView.LayoutManager : RecyclerView내에 아이템을 배치, liner, grid ..
Firebase Cloud Messaging (FCM) - Android FCM은? 무료로 메시지 전송할 수 있는 메시징 솔루션 알림 메시지 또는 데이터 메시지 전송 단일기기, 기기그룹, 특정 주제를 구독한 기기등 3가지 방식으로 메시지 배포 가능 클라이언트 앱에서 채널을 통해 다시 서버로 메시지를 보낼 수 있다. 메시지 작성, 타겟킹 - gui 기반 콘솔에서 가능, sdk 등이용해서 서버환경에서 메시지 생성 가능 메시지 메타 데이터 생성 각다른 플렛폼별 기기로 메시지 라우팅, 필요한 경우 플랫폼별 처리 등 사용자 기기의 sdk 로 로직에 따라 메시지 처리 일반적인 상용앱 플로우 앱에서 토큰 취득 → 앱서버로 토큰 전송 → 앱서버에서 FCM 토큰을 이용하여 메시지 전송 요청 → FCM에서 메세지 전송 → 앱에서 메시지 수신 메세지 메시지 유형 2가지 알림메시지 FCM이 기기에..
Android Room with a View - Kotlin 📍 출처 codelab - https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0 본 포스팅은 google codelabs 과정을 개인적으로 번역하고 필요한 부분만 요약하여 정리한 글입니다! 생략 및 첨언이 있습니다!! 시작전에 AAC collection은 lifecycle managerment와 data persistence와 같은 공통적인 작업 을위한 라이브러리와 앱아키텍처 가이드를 제공한다 . [이번 코드랩에서 할것] AAC 이용하여 권장 아키텍처 구현 database에서 저잗왼 데이터 받아오기, Sample words 를 받아와서 미리 채우기 모든 단어를 MainActivity에 recycler view로 보여주기 +but..
Android 에서 MVC, MVP, MVVM 예제로 공부하기 오늘은 MVC, MVP, MVVM 패턴에 대하여 공부 및 정리 해보도록 하겠당! 우선 이 세가지 패턴의 주요한 목적은 모든 대부분의 소프트웨어 설계가 그러하듯 ‘관심사 분리(역할 분리)’이다. MVC (Model + View + Controller) Model : 데이터, 데이터 처리, 비지니스로직 (독립적 재사용가능) View: UI에 해당하는 부분 Controller: 사용자 입력을 받고 처리 View에 연결 시나리오 사용자 action controller로 들어옴 Controller는 action에 맞는 데이터 처리를 model에 요청 및 갱신 Controller는 model을 통새 View를 갱신 장.단 Model test용이 , 모델과 뷰 분리 용이 컨트롤로가 비대해지는 문제 있음 예시코드 Mo..
[Android] Room - Part of Android Jetpack 📍 developers https://developer.android.com/training/data-storage/room https://developer.android.com/training/data-storage/room/defining-data#search 이 글은 개인적인 공부를 위해 developers의 글을 직접읽고 번역하며 작성한 글입니다. 번역의 오류가 있을 가능성이 있습니다. 개인적인 첨언이 있을수있습니다 Room 을 이용하여 Local DataBase에 data 저장하기 사소하지 않은 구조화된 데이터를 처리하는 앱은 해당 데이터를 로컬에 유지하면서 많은 이점을 얻을 수 있다. 가장 일반적인 사용 사례로는 데이터 조각을 캐시하는것이다. 그래서 네트워크에 연결 불가능한 경우에도 여전히 사..
Clean Architecture - Android에 적용하기 실제로 프로젝트에서 적용하면서 체감은 했지만 막상 깔끔하게 정리해보지 못했던 클린 아키텍처 개념을 정리해보려고 한다! 여러 아키텍처들이 있지만 공통의 목표는 계층을 분리하여 의존성을 없애는 것이 라고 한다. 클린아키텍처도 계층을 나누어 관심사를 분리하는 것에 목적이 있다 . 3 Layer 클린 아키텍처에서는 크게 3가지 레이어로 분리하는데 Domain / Data / Presentation layer이다 그리고 의존성 규칙(Dependency Rule)을 지켜 계층을 분리한다 Dependency Rule은 원 내부의 (inner) 계층은 외부(outer)의 계층을 알수없고 모든 소스코드 의존성은 반드시 외부에서 내부로 고수준 정책을 향해야 한다는 것이다 (즉 원 내부에서 외부 모르고 외부는 내부를 알수 ..
Gson vs kotlinx-serialization Kotlin에서 Gson을 사용하다보면 느끼는 한계가 있다. 1. Not Null 한 변수에 null 값이 들어갈 수 있다는것 null check를 컴파일 타임에 하지 않아 런타임에 오류발생 가능성이 생김 kotlin의 null safety한 장점이 소용이 없어진다 2. default value 적용되지 않는 문제 통신데이터에 값이 없다던가 여타 이유로 데이터가 없는경우 기본값을 적용하고싶은 경우가 있다 하지만 gson을 사용하는 경우 converte 할 data class 의 프로퍼티에 default value 를 적용해두어도 막상 converte 하면 적용되지 않는 문제가 있다 즉 Gson이 kotlin의 장점을 최대화 할수있을만틈 kotlin에 친화적이지 않다는 결론이 났다 (두둥) 해결책으로는 k..
SOLID 법칙 객체지향의 5대 원칙으로 확장, 유지보수가 쉬운 소프트웨어를 만들 수 있다 . 1. Single Responsibility Principle (SRP, 단일책임원칙) 소프트웨어의 부품 (클래스, 함수 등)은 단하나의 책임만 가져야한다 응집도는 높고 결합도는 낮은 객체를 만들기위함 하나의 책임만들 부여하여 다른 객체간의 결합도를 낮추도록 책임 분리 2. Open-Closed Principle (OCP, 개방-폐쇄 원칙) 기존코드를 변경하지 않고 기능 수정 추가 가능하도록 설계해야 한다 자주 변경되는 부분은 수정사항에 영향을 받지 않도록 설계 ex) 인터페이스 사용 3. Liskov Substitution Principle (리스코프 치환 원칙) 부모클래스와 자식클래스 사이의 행위에는 일관성이 있어야한다는 ..
터미널 명령어 alias 설정하기 - git 명령어 쉽게 쓰기 git을 터미널에서 사용하는데..!! 바쁜데 명령어 하나씩 치고있으면 답답하다.. 터미널에서 git 명령어를 짧게 alias 설정해두면 훨씬 빠르게 일을 할 수 있다 ! 1. bash profile 열기 $vi ~/.bash_profile 2. 원하는 축약어 설정하기 (폼) $alias {단축어}='{원래명령어}' // 예시 alias gst='git status' 3. 파일 적용 $source ~/.bash_profile 4. 확인하기 alias로 설정해둔 glg 쳐서 확인해본다 완성~