📱 Android 61

[Android] Jetpack Architecture #1 DataBinding

Jetpack 컴포넌트는 생산성을 높인 개발을 도우는 라이브러리로, 아래와 같은 특징이 있습니다 1. 애플리케이션 설계 권장사항을 따름 2. 보일러 플레이트 코드 줄임 3. 복잡한 작업들 간소 -> 중요 코드에만 집중 Jetpack 컴포넌트는 Foundation, Architecture, Behavior, User Interface 4개의 카테고리를 가지는데 그 중 Architecture에 대해서 알아보겠습니다 DataBinding xml을 앱의 데이터와 결합할 수 있는 라이브러리 - findViewById 메소드를 호출할 필요가 없어 앱 성능이 향상, 메모리 누수 및 NPE를 방지할 수 있다 💬 호출할 필요가 없는 이유 ? 바인딩 클래스 내부에서 미리 findViewById를 호출하고 그 결과를 캐싱해..

📱 Android 2022.06.05

[Android] Pattern (MVC, MVP, MVVM)

MVC Model, View, Controller로 구성 🔍 Model - 비즈니스 로직 및 데이터를 다루는 영역 ex) POJO 클래스, SQLite, Room, Realm 🔍 View - 사용자에게 보이는 영역 - Model로 부터 얻은 데이터 표시 ex) Activity, Fragment 🔍 Controller - 모델과 뷰에 의존 - 뷰로 부터 입력 받음 - 특정 이벤트 발생 시 뷰, 데이터 변경 가능 ex) Activity, Fragment 다이어그램 💬 MVC의 장점과 단점은 무엇일까? 장점 - 직관적이다 쉽게 말해 패턴을 몰라도 구조가 단순하고 직관적이라 쉽게 적용할 수 있다 단점 - 컨트롤러가 뷰, 모델에 의존적 -> 유닛테스트가 힘들다 - Fragment, Activity에서 Contro..

📱 Android 2022.05.30

[Android] Clean Architecture in Android

Clean Architecture 본격적인 디자인 패턴 공부에 앞서, clean Architecture에 대해 알아보겠습니다 Clean Architecture에 가장 중요한 부분은 UI와 Data를 분리함에 있습니다 관심사를 계층별로 분리 관심사란 단어가 잘 와닿지 않는데 정의를 알면 이해가 쉽습니다 관심사는 어떤 상태나 데이터에 영향을 미치는 정보의 집합을 뜻합니다 Clean Architecture Layer 각 계층별로 반드시 코드의 종속성이 외부로부터 내부로 의존 (Entities

📱 Android 2022.05.29

[Firebase SDK 추가 이슈] build.gradle in Bumblebee

오늘은 간단하게 SDK 추가 이슈에 대해 정리하겠습니다 Firebase SDK를 Build.gradle에 추가하려고 하니, 자꾸 에러가 발생했습니다 ㅠㅠ Firebase Console에서 설명된 SDK 추가 방법을 따르니, 프로젝트 수준의 build.gradle에서 에러가 발생했습니다 Bumblebee 버전에서는 위의 방법을 따르지 않고 아래처럼 classpath만 선언해주면 됩니다 혹시 저처럼 build.gradle 오류가 발생하시는 분들이 있다면, AndroidStudio Version을 확인해보시길 바랍니다 :)

📱 Android 2022.05.22

[Dagger2] #2 with.Retrofit

안녕하세요, 🐥 오늘은 DI 1탄에 이어서 2탄으로 돌아왔습니다 Rest API(Retrofit)와 Dagger2를 함께 사용하는 예제로 진행하겠습니다 이번 포스팅에서 진행할 3가지 기능입니다 📌 mocky API 📌 Retrofit을 이용해 REST API 연동 📌 Dagger2로 Retrofit 사용 Mocky 사용법 1. https://designer.mocky.io/에서 NEW MOCK을 클릭하여 이동 2. 출력하고자 하는 값을 JSON 형태로 Body에 넣어줍니다 3. GENERATE MY HTTP RESPONSE 클릭 - 이 경우에 BASE_URL은 https://run.mocky.io/v3/ 입니다 💬 본격적으로 DI를 시작하기 전, Retrofit과 dagger2 사용을 위해서 librar..

📱 Android 2022.04.07

[Dagger2] #1 DI 기본개념

안녕하세요 오랜만입니다 ㅎㅎ 오늘은 자주 사용되는 의존성 주입에 대해 정리해보고자 합니다 :) 함께 DI를 정복해봅시다!📚 ✅ DI (Dependency Injection) 의존성 주입의 개념과 필요성에 대해 알아봅시다 🔍 의존성 주입이란 ? - 구성요소간 의존관계가 소스코드 내부가 아닌, 외부를 통해 정의 예를 들어, 왼쪽은 A 객체에서 직접 B를 생성 오른쪽은 A 객체 외부에서 B를 생성 후 setter() 혹은 constructor를 통해 A에 주입 즉, 오른쪽과 같은 경우가 의존성 주입이 적용된 사례라고 생각하면 됩니다 여기서 객체를 생성하고 넘겨주는 외부 역할을 하는 것을 DI Framework 라 합니다 또한 객체의 생성 제어를 외부 Framework에서 담당하는 것을 IoC라 합니다 * IO..

📱 Android 2022.03.02

[Android] 앱 설치여부 확인 및 플레이스토어 이동

안녕하세요😄 외부 앱 호출을 사용할 때, 설치 여부를 확인을 하는 부분을 구현하다 제대로 동작하지 않기에 확인해보니 Android 11 이상에서는 Manifest에서 따로 설정해줘야 하는 부분이 있었습니다 변경된 부분을 설정 후, 특정 앱의 설치 여부를 확인하는 부분에 대해 알아보겠습니다 Package Visibility Manifest에서 를 선언 후 해당 태그 아래에 로 선언을 해주면 됩니다 위의 경우는 개별적으로 선언한 앱들만 허용하는 부분이고, 전체를 허용할 경우 퍼미션 중QUERY_ALL_PACKAGES를 선언해주면 됩니다. 변경된 부분이 너무 간단하지만, 안드로이드 버전이 올라갈 때마다 변경사항을 확인하지 않으면 놓치기 쉬운 부분일 것 같습니다 이어서 앱의 설치여부도 확인해보겠습니다 앱의 설치..

📱 Android 2021.12.27

[Android] RecyclerView (1) - Multi ViewHolder

안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않으면, 잘 잊기 쉽더라구요) 단순한 RecyclerView 사용보다 API를 연동해서 사용하는 방법을 정리해두면 실무에 더 될 것 같아서 REST API, ViewHolder, Retrofit, OkHttp를 함께 사용해보겠습니다. RecyclerView란 기존에 목록을 나타내기 위해 사용했던 ListView보다 더 유연하고 향상된 View로 쉽게 말하자면 ListView의 상위 버전이라고 생각하면 좋을 것 같습니다 1. 라이브러리 추가하기 implementation 'com.google.code.gson:gs..

📱 Android 2021.05.15

[Android] SharedPreference에 ArrayList, HashMap 저장하기

안녕하세요 오늘은 SharedPreference에 ArrayList, HashMap을 저장하는 방법에 대해 알아보고자 합니다 우선, SharedPreference에 대해 잘 모르시는 분이라면 2021.01.19 - [Android] - [Android] SharedPreferences 사용하기 를 보고 오시는 것을 추천드립니다 :) [Android] SharedPreferences 사용하기 SharedPreferences란? ✔ 데이터가 파일로 저장되고, 저장하려는 키-값 컬렉션이 비교적 작은 경우에 주로 사용됩니다. ✔ DB를 사용하지 않고, 간단한 데이터들을 저장할 때 주로 쓰이며, 앱을 껐다 ddusi-dod.tistory.com 소스는 Kotlin으로 작성했습니다 1. ArrayList 저장하기 ..

📱 Android 2021.03.24

[Android] FirebaseInstanceID Deprecated

FirebaseInstanceID Deprecated implementation 'com.google.firebase:firebase-messaging:21.0.1' Firebase-messaging을 21.0.1로 업그레이드를 시키니 Push Token을 받아오기 위해 사용했던 FirebaseInstanceID 클래스가 Deprecated 되었습니다😭 클래스 자체가 Deprecated 되었으므로 소스 전체의 변경이 필요했습니다 코드 변경하기 우선, 변경 전 FirebaseInstanceID가 import 되어있는 부분은 전부 삭제하고 진행했습니다. 기존에 쓰고 있던 코드는 public Task getInstanceId () 위의 원형을 사용한 코드였는데, FirebaseInstanceId 이 페이지를 ..

📱 Android 2021.03.08