전체 글 142

[Kotlin] 배열

안녕하세요 😊 코틀린에서 배열을 생성하고 사용하는 방법에 대해 알아보고자 합니다 포스팅에서는 Int형 배열을 생성하는 방법을 예로 들겠습니다 일차원 배열 생성하기 코틀린을 이용하여 다양한 방법으로 배열을 생성해보겠습니다 1. arrayOf() 배열의 선언과 동시에 데이터를 넣는 방법으로, 자료형 선언 없이 ()안에 데이터를 넣어주면 됩니다 Array 형태로 생성됩니다 val arr1 = arrayOf(1,2,3) // Array 2. 자료형ArrayOf() 배열의 선언과 동시에 데이터를 넣는 방법으로, 자료형ArrayOf()로 선언합니다 IntArray 형태로 생성됩니다 val arr2 = intArrayOf(1,2,3) // IntArray 3. arrayOfNulls(배열 크기) 비어있는 배열을 먼저..

💡 Kotlin 2022.07.02

[Kotlin/Android] Room 사용하기

로컬 데이터베이스인 Room을 사용해보다가 꾸준히 사용하게 될 DB일 것 같아 정리해보려고 합니다 Room은 기본 개념을 이해하는 것이 중요하기 때문에, 아주 간단한 예제로 진행하겠습니다. [2022.06.30] 업데이트 Room이란? Jectpack 라이브러리의 일부로 내부 저장소이며, ORM 라이브러리(DB데이터를 JAVA/Kotlin으로 변환) 입니다 Room 사용이 권장되는 이유 1. SQLite를 활용하여, 데이터 접근이 편리하고 유지보수가 용이하며, 마이그레이션도 간단합니다 2. SQLite와 달리, 컴파일 타임에 쿼리의 적합성을 확인할 수 있습니다 즉, SQLite보다 편리한 DB라고 생각하시면 될 것 같습니다 우선, Room을 사용하기 전 구성 요소에 대해 간단히 알아보고, 간단한 로그인,..

💡 Kotlin 2022.06.30

[Android] MVVM 구현하기

안녕하세요 :) 이전 포스팅에서 MVVM에 대해 알아봤습니다만, 2022.05.30 - [Android] - [Android] Pattern (MVC, MVP, MVVM) 막상 MVVM으로 구현하려니, 적용이 꽤나.. 어려웠습니다 🥶 그래서 MVVM을 구현 시 알아둬야할 부분에 대해 자세한 개념보다는 어떻게 써야하는지를 정리하려고 합니다 .. 멀고도 험한 MVVM의 길 😮‍💨 ⚒ Skill ⚒ - ViewModel - LiveData - DataBinding - Repository - Dagger ViewModel - AAC (Clean Architecture을 쉽게 구현하도록 제공되는 library) 중 하나 - LifeCycle을 고려해 UI 관련 데이터를 저장하고 관리 👀 ViewModle을 사용하..

📱 Android 2022.06.27

[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