전체 글 47

(Android) 의존성 주입(Dependency Injection) 정의 및 예시 + Dagger-Hilt 활용

의존성 주입 (= DI (Dependency Injection))-> 클래스와 클래스 간 관계를 맺을 시 내부에서 직접 생성하는 것이 아닌 외부에서 주입을 함으로써 관계를 맺게 만드는 것을 의미함 => 인터페이스화를 통하여 객체 변경에 대한 유연성을 증대, 객체를 내부에서 생성하는 것이 아닌 Container에서 생성하여 (= 제어의 역전) 주입하는 것을 의미 정리인터페이스화를 통한 객체 참조 변경의 유연성 증대객체 내부에서 생성하는 것이 아닌 DI Container 에서 생성하여 주입 (= 제어의 역전) 사용 이유결합도 감소 : 객체가 직접 다른 객체를 생성할 시 두 객체 간의 결합도가 높아짐. DI를 사용하면 객체 간의 결합도가 낮아져 코드 수정 시 영향 범위가 줄어듦테스트 용이성 : 의존성이 주입되..

Android 2024.09.02

(Android) - MVC, MVP, MVI 패턴의 이해 및 장단점

오늘은 안드로이드 앱 개발 시 적용하는 아키텍처 패턴들을 파악해 보자. [ 안드로이드 앱 개발 아키텍처 패턴의 종류 ]- MVC (Model View Controller)- MVP (Model View Presenter)- MVVM (Model View ViewModel)- MVI (Model View Intent)- 등등 해당 패턴 이름을 보면 M(Model), V(View)를 공통적으로 가지고 있음을 확인할 수 있다.- Model (데이터 or 데이터를 생성하거나 업데이트 / UI 상태임)- View (UI or 화면을 표시 / xml 형식임으로 입력에 대한 동작에 대해서 모름) 프로그램의 Presentation Logic & Business Logic 들을 구현하기 위해선 데이터, UI 는 필수적이..

Android 2024.08.24

(Android / Kotlin) - Room 을 사용한 데이터 유지

[ Room ]- SQLite를 쉽게 사용할 수 있는 데이터베이스 객체 매핑 라이브러리- 쉽게 Query를 사용할 수 있는 API 를 제공함- Query 를 컴파일 시간에 검증함- Query 결과를 LiveData 로 하여 데이터베이스가 변경될 때마다 쉽게 UI를 변경할 수 있음=> SQLite 보다 Room 을 사용할 것을 권장함  [ Room 주요 3 요소 ]@Database클래스를 데이터베이스로 지정하는 annotation, RoomDatabase를 상속받은 클래스여야 함 @Entity클래스를 테이블 스키마로 지정하는 annotation @Dao클래스를 DAO(Data Access Object)로 지정하는 annotation-> 기본적인 insert, delete, update SQL은 자동으로 만..

Android 2024.08.16

(Android) - MVVM 패턴 (ViewModel, LiveData, Observer)

[ MVVM 패턴 ] = Model + View + ViewModel- 안드로이드 아키텍처 패턴 중 하나- 사용자(Action) -> View(MainActivity) -> ViewModel(ViewModel Class) -> Model(Repository Database) View (Activity / Fragment)- 액티비티 / 프래그먼트- 유저의 UI 컴포넌트 Action 처리 + UI 이벤트 Action 처리를 받으며 UI 관련 로직을 실행함- View가 ViewModel을 Observe 하고 있기 때문에 View가 변경된 데이터를 갱신할 수 있도록 LiveData를 사용해야 함- LiveData 객체와 observe (ex: viewmodel.event.observe(this) { data ..

Android 2024.06.26

(Android / Kotlin) - SharedPreferences

[ 안드로이드 비휘발성 데이터 저장 방법 ] : 비휘발성 데이터는 앱이 종료되어도 데이터가 남아 있고 다시 앱을 실행했을 때 해당 데이터를 다시 가져올 수 있는 것을 말한다.  [ Preference ] SharedPreferences- 프로그램 설정 정보 (ex: 알림 설정, 자동 로그인 설정 등...)- XML 포맷의 텍스트 파일에 키-값 세트로 저장됨- 외부에서 못 읽어들임 (응용 프로그램의 고유한 정보이므로)=> 응용 프로그램 내의 액티비티 간에 공유하며 한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정된 값을 읽을 수 있음 getSharedPreferences (name, mode)- 여러개의 Shared Preferences 파일들을 사용하는 경우- name : Preference data를..

Android 2024.04.30

(Android Studio) - Dialog 사용하기

[ 다이얼로그 ] - 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메세지를 표시하는 작은 창이다. - 화면을 가득 채우지 않으며 보통은 사용자가 다음으로 계속 진행하기 전에 조치를 취해야 하는 모달 이벤트에 사용됨 [ 다이얼로그 구조 ] - AlertDialog 클래스를 사용하면 여러 가지 대화 상자 디자인을 빌드할 수 있음 - 대개 다이얼로그 클래스만 있으면 되는 경우가 많음 1) 제목 : 선택 사항으로 콘텐츠 영역에 상세한 메시지, 목록 또는 맞춤 레이아웃이 채워져 있는 경우에만 사용함, 단순한 메시지 또는 질문을 나타내는 경우는 제목이 없어도 됨. 2) 콘텐츠 영역 : 메시지, 목록 또는 다른 맞춤 레이아웃을 표시할 수 있음 3) 작업 버튼 : 대화 상자 하나에 작업 버튼이 세 개를 초과하면 ..

Android 2024.04.23

(Android Studio) - 프래그먼트의 데이터 전달

[ 프래그먼트 간 데이터 전달 ] 프래그먼트 간의 데이터 전달은 안드로이드 애플리케이션의 유연성과 모듈성을 향상시키는 중요한 기능임. 각 시나리오에 따라 데이터를 전달하는 방법을 정리해 보자. [ 1 ] Activity -> Fragment : 액티비티에서 프래그먼트로 데이터를 전달할 때는 프래그먼트의 인스턴스를 생성하고 newInstance 메소드를 통해 데이터를 전달한다. Bundle 객체를 사용하여 데이터를 프래그먼트의 인자(arguments)로 설정하고 이 인자를 프래그먼트가 받아 사용함 = 데이터를 보내는 코드 binding.run { fragment1Btn.setOnClickListener{ // [1] Activity -> FirstFragment val ..

Android 2024.04.17

(Android Studio) - RecyclerView 사용 방법

[ RecyclerView ] : 안드로이드 앱에서 리스트 형태의 데이터를 표시하는 데 사용되는 위젯, 여러 아이템을 스크롤 가능한 리스트로 표현하며 많은 아이템을 효율적으로 관리하고 보여 주는 역할을 함. - RecyclerView 는 한정적인 화면에 많은 데이터를 넣을 수 있는 View 임 - Recycle 을 해석하면 재활용하다라는 의미로 재사용을 하기 위해 사용됨 [ ListView 와 RecyclerView ] ListView - 사용자가 스크롤 할 때마다 위에 있던 아이템은 삭제되고 맨 아래의 아이템은 생성되는 것을 반복 - 아이템이 100개면 100개의 아이템들이 삭제되고 생성되는 것을 반복하여 성능이 좋지 않음 RecyclerView - 사용자가 스크롤 할 때 위에 있던 아이템을 재활용하여..

Android 2024.04.16

(Android Studio) - Adapter View

[ 어댑터 뷰 (Adapter View) ] 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능을 제공하는 뷰 (ex) - 리스트 뷰 (ListView) = 항목을 수직으로 나열시키는 방식 - 그리드 뷰 (GridView) = 항목을 격자 형태로 나열시키는 방식 ㄴ> 어댑터 뷰는 표시할 항목 데이터를 직접 관리하지 않고 어댑터 (Adpater)라는 객체로부터 공급을 받음 [ 어댑터 (Adapter) ] : 데이터를 관리하며 데이터 원본과 어댑터 뷰(ListView, GridView) 사이의 중계 역할 [ 어댑터뷰가 데이터 항목을 표시하는 방법 ] 1. 어댑터뷰가 어댑터를 사용하기 위해서는 먼저 데이터 원본이 어댑터에 설정되어 있어야 하고 어댑터뷰는 어댑터가 설정되어 있어야 함 2. 어댑터뷰는..

Android 2024.04.12

(Android Studio) - View Binding

[ View Binding ] - 뷰 바인딩 기능이란 뷰와 상호작용 하는 코드를 쉽게 작성할 수 있도록 하는 것 - 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성함 - 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됨 - 대부분의 경우 뷰 바인딩이 findViewById 를 대체함 쉽게 설명해서 뷰 바인딩을 사용하면 레이아웃 ID가 있는 뷰마다 변수를 선언하여 findViewById 와 연결할 필요가 없다는 뜻이다. 뷰 바인딩을 사용하면 코드 작성이 더 편해질 수 있다. [ findViewById 와의 차이점 ] 1) Null 안정성 (Null Safety) -> 뷰 바인딩 기능을 사용하면 앱이 레이아웃의 각 뷰를 직..

Android 2024.04.11