Android 18

[안드로이드] CustomTextView

CustomView이란? 안드로이드에서 기본적으로 제공하는 TextView, EditText, Button 등은 당연하게도 설정할 수 있는 속성값들이 정해져있다. 만약 사용자가 제공하지 않는 기능을 만들고 싶다면 사용하는 것이 CustomView이다. 이 글에선 AppCompatTextView 클래스를 상속 받은 CustomTextView를 만들고자 한다. CustomTextView 구현 과정 1. 뷰를 정의한다. values 패키지에 attrs.xml로 파일을 생성한다. CustomTextView의 이름을 CustomText라 짓고 추가할 속성들의 이름을 prefixText, showText 로 각각 정의하였다. 해당 속성에 맞는 format을 사용해주면 된다. 만약 enum 값을 사용하고 싶다면 다음..

Android 2023.07.30

[안드로이드] 서비스

서비스 안드로이드 4대 컴포넌트 중 하나로 사용자가 직접 상호작용하지 않고 백그라운드에서 실행되는 컴포넌트 특징 1. 백그라운드라 다른 스레드이라고 생각하기 쉽지만 메인 스레드에서 작동하기 때문에 '화면이 없는 액티비티'라고 생각하면 편함 2. '메인 스레드에서의 작동' 이라는 특징 때문에 기존 백그라운드 처리와 다른 개념으로 접근해야 함 => 별도의 스레드를 생성하는 방식으로 처리 서비스 실행 방식 크게 스타티드 서비스, 바운드로 구분 됨 스타티드 서비스 startService() 메서드를 호출하여 액티비티와 상관없이 독립적으로 동작할 때 사용함 이 때문에 일반적으로 백그라운드에서 많이 사용하는 방식 이미 백그라운드 서비스가 동작 중인 상태에서 서비스의 재시작을 요청할 경우 새로 만들지 않고, 생성되어..

Android 2023.07.22

[안드로이드] 콘텐츠 제공자(ContentProvider) 와 콘텐츠 리졸버(ContentResolver)

ContentProvider란? 앱이 자체적으로 저장한 데이터, 다른 앱이 저장한 데이터에 대한 액세스 권한을 관리하도록 돕고 다른 앱과 데이터를 공유할 수 있는 표준 인터페이스 특징 1. 데이터를 캡슐화하기 때문에 데이터의 보안을 유지할 수 있음 2. 1번의 영향으로 다른 앱의 데이터에 안전하게 액세스하여 이를 수정할 수 있음 3. 데이터 접근 권한이 세부적으로 나누어져있어 원하는 데이터만 공유할 수 있음 4. 앱의 여러 가지 데이터 소스들을 추상화하여 사용이 가능함 5. 데이터는 관계형 데이터베이스 테이블과 유사한 테이블로 표시 됨 6. 콘텐츠 제공자를 구현할 수 있지만 직접 구현할 일은 잘 없고 콘텐츠 제공자로부터 미리 만들어진 데이터를 가져오는 콘텐츠 리졸버(ContentResolver)를 주로 ..

Android 2023.07.16

[안드로이드]FragmentManager

FragmentManager 앱 프래그먼트에서 프래그먼트를 추가, 삭제 또는 교체하고 백 스텍에 추가하는 등의 작업을 실행하는 클래스 FragmentManager에 접근 FragmentManager는 액티비티당 FragmentManager 하나가 존재하기 때문에 이를 가져와서 사용하면 됨 액티비티에서 getSupportFragmentManager() 매서드 사용 프래그먼트에선 하위 프래그먼트가 존재할 시 getChildFragmentManager() 매서드 사용 상위 프래그먼트의 FragmentManager에 접근할려면 getParentFragmentManager() 메서드 사용 FragmentTransaction FragmentManager를 통하여 프래그먼트를 추가, 삭제하기 위한 작업 beginTr..

Android 2023.07.09

[안드로이드]DataStore에 대하여

DataStore Jetpack 라이브러리의 구성요소로 포로토콜 버퍼를 사용하여 키-값 쌍 또는 유형이 지정된 객체를 저장할 수 있는 방식 Kotlin 코루틴 및 Flow 를 사용하여 비동기적이고 일관적인 트랜잭션 방식으로 데이터를 저장하는 것이 특징 위 방식 때문에 다중 스레드 환경에 최적화가 되어 있습니다. 기존 SharedPreferences의 대체제로 현재 안드로이드 공식 문서에서 SharedPreferences를 DataStore로 변경하라고 권고 하고 있습니다. 주로 간단한 앱 상태나 로그인 상태 등 간단한 데이터를 저장할 때 사용합니다. 프로토콜 버퍼란? 구글에서 만든 구조적 데이터 전송 방식의 일종 쉽게 말해 JSON과 비슷한 역할을 수행 구현 전 주의 사항 1. 같은 프로세스에서 특정 파..

Android 2023.07.02

[안드로이드]Intent에 관하여

Intent(인텐트)란? 메시징 객체로, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있는 것 여기서 앱 구성 요소는 안드로이드 어플리케이션을 구성하는 기본 요소를 의미하며, Activity, Service, Broadcast Receiver, Content Provider가 있습니다. 쉽게 말해, 기본 요소들끼리 정보 전달을 해주는 것이자 앱에서 작업을 수행하기 위해 사용하는 전달 수단입니다. Intent 사용 사례 공식 문서에서 설명하는 Intent를 사용하는 경우는 다음과 같습니다. 1. Activity(액티비티) 시작 Activity는 앱 안의 단일 화면을 나타냅니다. Activity의 새 인스턴스를 시작하기 위해 Intent를 startActivity()로 전달하는데, 이 Intent..

Android 2023.06.01

[안드로이드]RecyclerView에 관하여

RecyclerView란? 동적으로 레이아웃에 데이터를 표시하는 Container의 일종으로 ListView와 비슷하게 스크롤을 통해 목록을 표시하는 뷰이다. 단, ListView는 스크롤을 통해 데이터가 뷰에서 벗어나면 제거를 하지만, RecyclerView는 벗어난 뷰를 재사용하여 앱의 등답성을 개선하고 전력 소모를 줄이므로써 성능이 더 개선됐습니다. 주요 클래스 ViewGroup RecyclerView는 데이터에 해당하는 뷰가 포함된 ViewGroup이므로, 다른 UI 요소를 추가할 때처럼 레이아웃에RecyclerView를 추가하면 됩니다. ViewHolder 목록의 각 개별 요소를 뷰 홀더 객체로 정의합니다. 뷰 홀더를 처음 생성하게 되면 뷰 홀더에 연결된 데이터가 없기 때문에 RecyclerVi..

Android 2023.05.23

[안드로이드] 아키텍처 원칙

아키텍처 원칙에 관하여 아키텍처란? 시스템의 구조, 행위, 더 많은 뷰를 정의하는 개념적 모형이다. 시스템 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용하는지, 정보가 어떻게 교환되는지를 설명한다. 출처 : 위키 백과 아키텍처는 어떤 시스템의 구조라고 할 수 있다. 안드로이드에선 아키텍처는 앱이 확장과 견고성을 유지하고 쉽게 테스트할 수 있도록 정의하는 것이 주요 목표이다. 즉, 아키텍처는 앱의 부분과 그 각 부분에 필요한 기능 간의 경계를 정의한다. 위 주요 정의를 지키기 위해 다양한 방법이 있지만 안드로이드 공식 문서에선 다음과 같은 원칙을 준수하라고 적혀있다. 1. 관심사 분리 컴퓨터 프로그램을 구별된 부분으로 분리시키는 디자인 원칙으로, 각 부문은 개개의 관심사를 해결한다...

Android 2023.05.09