📱 Android 64

[Android] 4대 Component

Component Application의 구성 요소입니다 Manifest 파일에 등록 필수 🔍 시스템에 컴포넌트를 알려야하기 때문에 일반 클래스와의 차이 일반 클래스: 생명주기 관리 개발자 코드 컴포넌트 클래스 : 안드로이드 시스템에서 생명주기 관리 또, 앱 안에서 독립된 실행단위로 이로 인해 안드로이드는 앱 실행 시점이 다양합니다 안드로이드에선 4개의 Component가 존재하는데, 각각 Component들에 알아보겠습니다 생성방법이나 사용법에 대해선 자세히 다루진 않겠습니다 😭 1. Activity 화면을 구성하고 사용자와 상호작용을 담당하는 컴포넌트 2. Broadcast Receiver 시스템에 어떤 이벤트가 발생 (ex.부팅, 배터리상태, 화면 On/Off)하면 실행되는 컴포넌트 Broadcas..

📱 Android 2022.07.05

[Android] Activity LifeCycle 🧐

안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대로 알아보겠습니다 1. onCreate() 최초로 1회만 실행되기 때문에 필수로 구현되어야 하는 부분이고, 초기 1회만 실행되어야 하는 부분을 넣어줍니다 주로 setContentView()를 onCreate에서 호출합니다 2. onStart() 사용자에게 화면이 보여질 때 호출되고, 여러 번 호출이 가능합니다 3. onResume() 사용자와 상호작용을 할 수 있을 때 호출되며, 여러 번 호출이 가능합니다 즉, 포커스를 얻을 때 실행되는 부분이며 액티비티가 포커스를 잃기 전까지 이 상태에 ..

📱 Android 2022.07.03

[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