안드로이드란 무엇인가에 대해서는 지난 포스팅에 정리해두었다.
https://superohinsung.tistory.com/72
오늘은 이러한 안드로이드 앱 개발의 주요 특징들에 대해서 정리해보자.
컴포넌트를 기반으로 한 개발
안드로이드 개발의 핵심은 컴포넌트(Component)이다. 그렇기에 안드로이드 앱 개발의 구조를 이해하려면 컴포넌트가 무엇이고 어떻게 동작하는지 반드시 알아야한다.
컴포넌트를 한마디로 정리하자면, 애플리케이션의 구성 요소이다.
컴포넌트는 애플리케이션이 아니라 애플리케이션을 구성하는 단위이다. 즉, 하나의 애플리케이션은 여러 컴포넌트로 구성하고 있고, 여러 행태인지는 상황에 따라 달라지는데, JAR파일이나 DLL로도 개발한다.
그렇다면 안드로이드 앱을 구성하는 클래스는 모두 컴포넌트 일까?
결론부터 말하자면 아니다
안드로이드에서는 클래스로 컴포넌트를 개발하지만 그렇다고 애플리케이션을 구성하는 모든 클래스가 전부 컴포넌트라는 것은 아니다.
컴포넌트 클래스와 일반 클래스로 구분되며, 이러한 차이는 런타임 때 생명주기를 누가 관리하는가에 따라 차이가 있다.
- 생명주기 관리를 개발자 코드에서 한다면 일반클래스
- 생명주기를 안드로이드 시스템에서 관리한다면 컴포넌트 클래스
안드로이드 컴포넌트는 4가지
이미 이에 대해서도 지난 포스팅으로 정리를 하였다.
https://superohinsung.tistory.com/54
하지만 여기서도 다시 공부할 겸 정리를 해보자.
컴포넌트는 크게 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버로 구분된다.
간단하게 정리하자면
- 액티비티는 화면을 구성하는 컴포넌트이다.
- 서비스는 백그라운드 작업을 하는 컴포넌트이다.
- 콘텐츠 프로바이더는 앱의 데이터를 공유하는 컴포넌트이다.
- 브로드캐스트 리시버는 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트이다.
4가지의 컴포넌트를 어떻게 구분할까? 이건 정말 간단하다. 코드에 적혀있는 상위 클래스를 보고 바로 구분이 가능하기때문이다.
액티비티는 Activity를 상속받고, 서비스는 Service, 콘텐츠 프로바이더는 ContentProvider, 브로드캐스트 리시버는 Broadcasereceiver 클래스를 상속받는다.
컴포넌트는 개발자가 만들고자하는 앱의 기능과 화면 등을 고려해서 필요한 만큼 구성하면된다.
컴포넌트라는 요소는 앱 안에서 독립된 실행 단위이다. 그 의미는 컴포넌트끼리 종속되지 않아서 코드 결합이 발생하지 않으며, 앱 실행 시점이 다양할 수 있다는 뜻이다.
애플리케이션 라이브러리의 사용
컴포넌트로 구성된 안드로이드 앱의 또 한가지의 특징은 애플리케이션 라이브러리를 사용할 수 있다는 것이다. 애플리케이션 라이브러리란 다른 애플리케이션을 라이브러리처럼 이용하는 것을 말한다.
안드로이드 앱은 사용자가 실행하지 않아도 실행될 수 있고 실행시점도 다양해서 다른 앱과 연동할 수 있다.
리소스를 활용한 개발
안드로이드 개발에 또 다른 특징은 리소스를 많이 활용한다는 것이다.
리소스란 코드에서 정적인 값을 분리한 것이다. 앱에서 발생하는 데이터나 사용자 이벤트에 따른 동적인 값이 아니라 항상 똑같은 값이라면 굳이 코드에 담지 않고 분리해서 개발하는 것이 코드도 짧아지고, 개발 생산성과 유지 보수성이 좋아지기 때문이다.
예시를 들자면 문자열 리소스이다.
<resources>
<string name="app_name">SangSang</string>
<string name="password">비밀번호</string>
<string name="email">이메일</string>
<string name="login">로그인</string>
<string name="signout">로그아웃</string>
<string name="userInfoUpdate">유저 정보 수정</string>
<string name="update">수정하기</string>
<string name="welcome">환영합니다.</string>
<string name="hello">안녕하세요.</string>
<string name="introduce">자기소개</string>
<string name="changeImage">이미지 변경</string>
</resources>
자주 사용하는 문자열을 위와 같이 리소스로 등록해서 사용하면 효율적이다.
binding.passwordInputLayout.apply {
isErrorEnabled = uiState.showPasswordError
error = if (uiState.showPasswordError) {
context.getString(R.string.password_is_not_valid)
} else null
}
이외에도 색상, 크기, 레이아웃, 이미지, 메뉴등 많은 요소를 리소스로 등록하여 활용할 수 있다.
'Android > Study' 카테고리의 다른 글
[Android] View Class에 대한 정리 (0) | 2023.09.23 |
---|---|
[Android] 안드로이드 프로젝트 구성 파일 정리 (0) | 2023.09.23 |
[Android] ConstraintLayout 이란 (0) | 2023.09.11 |
[Android] View, ViewGroup, XML Layout 이란? (0) | 2023.09.10 |
[Android] Glide 간단 정리 (0) | 2023.07.28 |