본문 바로가기

전체 글

(20)
[Android] AAC (Android Architecture Components) AAC 란? AAC는 Android Architecture Components의 약자로, 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음이다. 쉽게 말해서 라이브러리 모음이라고 할 수 있다. Google I/O 2017에서 새로운 라이브러리를 AAC로 묶어서 발표를 하여 AAC라는 것이 사용되게 되었고, Google I/O 2018에서 Android Jetpack을 발표할 때는 Jetpack의 구성요소 중 하나로 AAC가 들어가 있다. 안드로이드 아키텍처 (AAC) 원칙 관심사 분리 코드를 작성할 때 Activity 혹은 Fragment와 같은 UI 기반의 클래스는 UI 및 OS 상호작용을 처리하는 로직만 포함해야 한다. 이는 UI 클래스를 최대한 가볍게 유지하여 Lifecycl..
[Android] DataBinding 안드로이드 공부를 하면서 databinding을 많이 사용해왔으나 databinding을 지양하는 것이 좋다는 말을 주변에서 듣고 무심코 써왔던 databinding에 대해 내가 자세히 알고 있지 못하다고 생각하게 되어 이 글을 쓰게 되었다. DataBinding이란 Data Binding은 안드로이드 아키텍처 구성요소 중 하나로 UI 구성요소와 앱의 데이터 소스를 선언적으로 연결할 수 있게 하는 라이브러리이다. DataBinding 장점 레이아웃 파일에서 UI 구성요소를 앱 데이터와 연결하면 액티비티에서 UI 프레임워크의 호출을 줄일 수 있어서 코드가 간결해지고 유지관리가 쉬워진다는 장점이 있다. 또한 앱 성능이 향상되며, 메모리 누수 및 Null Pointer 예외를 방지할 수 있다. 1. 가독성 향..
[Kotlin] 고차함수와 람다함수 고차함수와 람다함수는 함수를 일종의 변수로 사용할 수 있게 해줄 뿐만 아니라 컬렉션의 조작이나 스코프 함수의 사용에도 도움이 되어 자주 활용하게 되는 함수들이다. 먼저 고차함수에 대해 자세히 알아보자. 고차함수는 함수를 마치 클래스에서 만들어 낸 '인스턴스'처럼 취급하는 방법이다. 즉 함수를 패러미터로 넘겨줄 수도 있고 결과값으로 반환받을 수도 있는 방법이다. 코틀린에서는 모든 함수를 고차함수로 사용 가능하다. fun a (str : String){ println("$str 함수 a") } fun b (function: (String)->Unit) { function("b가 호출한") } 다음은 함수 b가 함수 a를 고차함수 형식의 패러미터로 받을 수 있도록 한 코드이다. fun b (function: ..
[Kotlin] 스코프 함수 스코프 함수를 이용하면 인스턴스의 속성이나 함수를 scope내에서 깔끔하게 분리하여 사용할 수 있다는 점 때문에 코드의 가독성을 향상시키는 특징이 있다. 이러한 스코프 함수에 대해 자세히 알아보자. 스코프 함수는 함수형 언어의 특징을 좀 더 편리하게 사용할 수 있도록 기본으로 제공하는 함수들이다. 클래스에서 생성한 인스턴스를 스코프 함수에 전달하면 인스턴스의 속성이나 함수를 좀 더 깔끔하게 불러 쓸 수 있다. 스코프 함수에는 apply, run, with, also, let이 있다. 각각에 대해 자세히 알아보자. apply : 인스턴스를 생성한 후 변수에 담기 전에 ‘초기화 과정을 수행할 때’ 많이 쓰인다. apply와 같은 스코프 함수를 사용하면 main함수와 ‘별도의 scope’에서 인스턴스의 변수와..
[Android] Multi-ViewType RecyclerView 이전 포스트에서 RecyclerView에 대해 알아보았다. 이전 포스트 내용에서는 한가지 틀을 재활용하여 연속적으로 사용하는 뷰를 구성해보았다. 그렇다면 여러가지 틀을 연속적으로 사용하는 뷰를 만들고자 한다면 어떻게 해야할까? 그럴 때 사용하는 것이 ConcatAdapter와 Multi-ViewType RecyclerView이다. 그렇다면 ConcatAdapter와 Multi-ViewType RecycleView의 차이점은 무엇일까? ConcatAdapter은 역할에 확정을 지어주어야 한다. (헤더, 바디 등등) 반면 Multi-ViewType RecycleView는 보다 유연하게 사용 가능하다. 그러나 ConcatAdapter가 구현이 훨씬 용이해서 상황에 따라 선택해서 구현하는 것을 좋다. 이번 포스..
[Record] 2주간 앱잼 회고 2023.7.9 ~ 2023.7.22 동안 sopt에서 2주간 함께 팀원들과 합숙하며 서비스를 개발하는 앱잼 활동을 하였다. 팀원들과 함께 합숙하며 즐겁고 소중한 추억도 많이 만들고 데모데이를 앞두고는 개발에 깊게 몰두하는 시간을 가졌다. 프로젝트를 진행하면서 우여곡절을 정말 많이 겪었는데 이를 성장의 밑거름으로 삼고자 앱잼을 통해 가져가고 싶은 것들을 정리하였다. 이에 대해 KPT 방식으로 회고를 하고자 한다. Keep 1. 뷰 스케치 : 리드의 권유로 스케치를 하고 작업에 들어갔는데 어떤 컴포넌트를 사용할지, 어떤 레이아웃을 사용할지, 액티비티를 사용할지 프래그먼트를 사용할지 등을 미리 적어두어 훨씬 효율적으로 작업할 수 있었다. 2. 로그를 찍어 확인하는 방식을 많이 활용 : 서버를 붙이는 과정에서..
[Android] RecyclerView 안드로이드 프로젝트를 몇 번 진행해보면서 리사이클러뷰가 정말 많이 사용되는 것을 느꼈다. 그래서 리사이클러뷰에 대해 정리하는 시간을 가져보고자 한다. RecyclerView는 Adapter를 활용하는 컴포넌트이다. Adapter Pattern에 대해 잠깐 알아보자면 디자인 패턴의 일종으로 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 패턴이다. 이 패턴을 사용하면 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동할 수 있다. 즉, 어댑터 패턴은 호환성이 없는 두 개의 인터페이스 사이에서 중간 역할을 수행하여 서로 호환성을 유지하면서 작업을 처리할 수 있게 한다. 즉 AdapterPatten을 이용함으로써 클라이언트와 구현된 인터페이스를 분리시킬..
[Android] Fragment 생명주기 1. Fragment 란 Fragment는 동작 또는 Activity내에서 UI의 일부를 나타낸다. 여러 개의 프래그먼트를 하나의 액티비티에 조합해 창이 여러 개인 UI를 구축할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있다. 프래그먼트는 자체 수명 주기를 가지고, 자체 입력 이벤트를 받으며, 액티비티 실행 중에 추가 및 제거가 가능한 액티비티의 모듈 섹션이라고 생각하면 된다. 프래그먼트는 항상 액티비티 내에 포함되어 있어야 하며 해당 프래그먼트의 수명주기는 호스트 액티비티의 수명주기에 직접적으로 영향을 받는다. 이러한 프래그먼트는 분할된 화면들을 독립적으로 구성하기 위해 사용하고, 분할된 화면들의 상태를 관리하기 위해 사용한다. 2. Fragment's Lifecycle & Fra..