1. JSON 구조란? JSON은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합입니다. 따라서 JSON 데이터는 다음과 같은 자바스크립트 객체 표기법에 따른 구조로 구성됩니다. 객체(object)는 중괄호({})로 감싸며, 키(key)와 값(value)은 콜론(:)으로 구분됩니다. 각각의 키-값 쌍은 쉼표(,)로 구분됩니다. 배열(array)은 대괄호([])로 감싸며, 값은 쉼표(,)로 구분됩니다. 문자열(string)은 큰따옴표("")로 감싸며, 특수 문자를 이스케이프(escape)할 수 있습니다. 숫자(number)는 정수 또는 실수로 표현할 수 있습니다. 부울(boolean)은 참(true) 또는 거짓(false) 값을 가집니다. null은 값이 없음을 나타냅니다. 2. 실제 형식 2-1. J..
1. Retrofit2란? Retrofit2는 안드로이드 애플리케이션에서 REST API를 사용하여 서버와 통신하는 라이브러리입니다. 스퀘어에서 만들었으며 HTTP 통신을 간편하게 만들어줍니다. Retrofit1도 있지만, Retroift2가 2015년에 나왔으므로 이제 Retrofit하면 전부 Retrofit2라고 봐도 무방합니다. 1-1. REST API REST API(Representational State Transfer Application Programming Interface)는 웹 기반 응용 프로그램에서 사용되는 소프트웨어 인터페이스입니다. 클라이언트 - 서버 모델을 기반으로 하며, HTTP 프로토콜을 통해 서버와 클라이언트 간 통신을 합니다. 전송하는 데이터 형식은 일반적으로 JSON과..
1. 정의 뷰 모델은 안드로이드 앱 아키텍처 컴포넌트 중 하나로, UI와 비즈니스 로직 사이의 중간 매개체 역할을 한다. 뷰 모델은 UI 구성 요소에서 사용하는 데이터를 관리하고, 이 데이터를 유지하면서 화면 회전과 같은 구성 변경에 대한 생명주기 이벤트를 처리한다. 뷰 모델을 사용하면 화면 구성 변경과 같은 이벤트가 발생할 때, 데이터를 다시 불러오지 않고 기존 데이터를 유지하면서 UI를 업데이트 할 수 있다. 일반적으로 뷰 모델은 뷰에 필요한 데이터를 불러오기 위해 Repository나 Use Case와 같은 데이터 관리 레이어와 상호 작용하며, 데이터를 가공하고 뷰에 보여줄 준비를 한다. 이를 통해 뷰 모델은 뷰에서 비즈니스 로직을 분리하고, 유지보수성과 테스트 용이성을 향상하는데 도움을 준다. 2..
1. 정의 라이브 데이터는 안드로이드 앱에서 사용되는 데이터 홀더 클래스이다. 데이터를 관찰하고 데이터가 변경될 때 관찰자에게 알리는 데 주로 사용된다. 옵저버 패턴을 구현하며, 데이터 소스가 변경될 때마다 관찰자(뷰나 프래그먼트)에게 변경 사항을 알려준다. 라이브 데이터는 일반적으로 ViewModel 클래스와 함께 사용된다. ViewModel은 UI와 관련된 데이터를 처리하고 보고나하며, 라이브 데이터를 사용하여 이러한 데이터를 관찰할 수 있다. 이를 통해 UI 컴포턴트와 비즈니스 로직을 분리하고, 유지보수성과 확장성을 향상시킬 수 있다. 2. 사용 예시 2-1. 상황 ViewModel에서 라이브 데이터를 사용하여 데이터를 관찰하고, UI 컴포넌트에서 라이브 데이터를 구독하여 데이터가 변경될 때마다 업..
1. 정의 데이터 바인딩은 레이아웃 XML 파일과 액티비티 또는 프래그먼트 등의 뷰 컨트롤러 코드를 연결해주는 기술이다. 데이터 바인딩을 사용하면 레이아웃 XML 파일에서 뷰와 그것에 바인딩될 데이터를 선언하고, 이를 뷰 컨트롤러 코드에서 바로 참조할 수 있다. 장점은 코드의 가독성과 유지 보수성이 향상된다는 점에 있다. 1-1. 데이터 바인딩? 뷰 바인딩? 언뜻 보면 비슷해 보인다. 이름도 비슷한 것이 다른 점은 어떤 것이 있을까? 뷰 바인딩은 XML 파일에서 정의한 모든 뷰를 각각의 바인딩 객체로 생성한다. 이 바인딩 객체는 해당 뷰와 관련된 메서드와 속성에 대한 강력한 타입 안정성을 제공한다. 뷰 바인등을 사용하면 findViewByID 같은 메서드를 사용하지 않아도 레이아웃 파일에서 정의한 모든 ..
1. 정의 안드로이드 앱 개발에서 사용되는 기술 중 하나로, XML 레이아웃 파일에서 정의된 뷰 객체를 가종으로 바인딩하는 방식을 말한다. 뷰 바인딩은 안드로이드 SDK의 업데이트와 함께 점차 발전하였다. 1-1. 변천사 1) SDK 26 이전 버전 findViewById만 사용 가능하던 암울하던 시기이다. class MainActivity : AppCompatActivity() { private lateinit var mTextView: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mTextView = fi..
1. 정의 1-1. 코루틴이란? 코루틴은 비동기 프로그래밍을 지원하는 Kotlin의 라이브러리이다. 스레드와 비슷한 역할을 하지만, 비교적 가벼우며, 쉽게 사용할 수 있다. 1-2. 비동기 작업은? 비동기 작업은 애플리케이션에서 시간이 오래 걸리는 작업을 수행할 때, 결과를 기다리지 않고 다른 작업을 수행하는 방식을 말한다. 한 번에 여러가지 일을 처리하기 위함이라고 생각하면 편하다. 일반적으로 네트워크 요청, 데이터베이스 조회, 파일 다운로드 등과 같은 작업을 비동기적으로 처리한다. 비동기 작업을 수행하면 애플리케이션의 응답성이 향상되고, 화면이 멈추는 등의 문제를 방지할 수 있다. 이를 구현하는 방식으로는 콜백, 스레드, 코루틴 등이 있다. 1) 콜백이란? 콜백은 비동기 작업이 완료되면 호출되는 함수..
1. 정의 ViewPager는 안드로이드에서 제공하는 위젯 중 하나로, 여러 개의 뷰를 좌우로 슬라이딩하며 화면에 표시할 수 있도록 하는 기능을 제공한다. 탭 메뉴나 이미지 슬라이더 등 다양한 용도로 사용되며, 여러 개의 뷰를 일정한 간격으로 배치하여 스크롤 가능한 화면을 구성할 수 있다. 언뜻 보면 recyclerView랑 비슷해 보이지만, 뷰페이저를 이용한 것은 일정 부분 화면이 넘어가면 화면이 전환되는 특징을 가지고 있다. 2. 활용 방법 2-1. xml 파트 2-2. main에 들어가야할 파트 // ViewPager 객체 생성 val viewPager = findViewById(R.id.viewPager) // PagerAdapter 객체 생성 val pagerAdapter = MyPagerAda..
1. 정의 콜백 함수는 함수형 프로그래밍에서 많이 사용되는 개념 중 하나이다. 다른 함수에 인자로 전달되어 실행될 함수를 의미한다. 콜백 함수는 일반적으로 이벤트 기반 또는 비동기 프로그래밍에서 사용된다. 이벤트 기반 프로그래밍에서는 이벤트가 발생할 때마다 콜백 함수가 호출되어 특정 작업을 수행합니다. 비동기 프로그래밍에서는 콜백 함수가 비동기 작업이 완료된 후에 호출되어 결과를 반환합니다. 즉, 프로그램이 순차적으로 실행되어야 할 때 자주 사용된다. 쉽게 말하면 함수를 호출하는 것이다.
1. 생명 주기 1-1. 생명 주기 그동안 안드로이드 구조에 대해 잘 몰랐는데, 알고 보니 안드로이드 앱은 생명 주기가 존재한다. 실제 사용자 입장에서는 앱을 키고 작동하는 것이 전부인데, 실제로는 그 안에서 여러 단계를 거치면서 체계적으로 작동하고 있었다. 앱을 만들 때 생명 주기를 고려하는 것은 필수적이다. 이를 고려하지 않으면 불안정적인 앱이 만들어 질 수 있다. 안드로이드 개발 문서에서 대표적인 예시를 들어주었다. 1. 앱을 사용하다가 다른 앱으로 전환할 때 강제 종료가 되는 경우 2. 앱을 사용하고 있지 않은데 리소스가 낭비되는 경우 3. 앱에서 나갔다가 다시 들어왔는데 사용자의 진행 상태가 저장되지 않은 경우 4. 화면 가로/세로 전환을 할 경우, 강제 종료되거나 진행 상태가 저장되지 않은 경..