본문 바로가기

전체 글36

[Android] AAC - ViewModel Google I/O 2017에서 발표한 JetPack의 Android Architecture Components는 안드로이드 개발자들에게 테스트와 유지보수가 편리한 앱을 작성할 수 있도록 도와주고자 만든 라이브러리입니다. 이번 글에서는 AAC의 여러 아키텍처 컴포넌트 중에서 ViewModel에 대해서 정리해보려고 합니다. # AAC ViewModel의 배경 시스템에서 UI를 제거하거나 다시 만들면 저장되어 있던 UI 관련 데이터는 모두 사라지게 됩니다. 대표적인 예로, 화면을 회전시키게 되면 회전한 뷰를 다시 그려야하기 때문에 기존의 액티비티는 제거되고 새로운 액티비티가 생성됩니다. 이때, 액티비티 내의 데이터는 액티비티의 생명주기를 따르기 때문에 화면 회전과 함께 데이터가 모두 날아가게 됩니다. 만약 .. 2020. 10. 2.
[Android] 액티비티 생명주기(Activity Lifecycle) [지난 포스팅 - 안드로이드 앱 구성 요소]에서 안드로이드의 진입점에 해당하는 네 가지 구성요소는 모두 시스템에 의해 관리된다고 배웠습니다. 이번 시간에는 네 가지 구성요소 중에서 액티비티의 수명주기에 대해서 알아보도록 하겠습니다. 게임을 하다가 전화를 받고 일정을 확인하 다시 게임으로 돌아가는 평범한 사용패턴에서 여러 액티비티는 활성화, 비활성화를 반복합니다. 눈으로 보기엔 활성화 되거나 비활성화 되거나 두 가지의 상태를 갖는듯 하지만 실제로 액티비티는 내부적으로 더 많은 상태를 가집니다. 액티비티는 앱에서 발생하는 여러 이벤트 때문에 계속해서 상태를 전이하게 되는데, 상태전이를 하기 전에 시스템은 콜백함수를 통해서 액티비티의 상태가 변했다는것을 알려줍니다. 따라서 우리는 이 콜백함수를 이용해서 액티비.. 2020. 9. 19.
[Android] 안드로이드 앱 구성요소 (4대 컴포넌트) # 앱 구성 요소 액티비티 (Activity) 서비스 (Service) 브로드캐스트 리시버 (Broadcast Receiver) 컨텐츠 프로바이더 (Content Provider) 앱 구성 요소(4대 컴포넌트)는 안드로이드 앱에서 많은 feature들 중에서도 필수적인 구성 요소입니다. 안드로이드 어플리케이션은 결국 안드로이드 프레임워크위에서 작동하는 컴포넌트들의 집합입니다. 위의 네 가지 컴포넌트들은 App Manifest에 등록되어 있기 때문에 안드로이드 시스템에서 각각의 컴포넌트들을 인지할 수 있습니다. 어쩌면 이 글을 읽고 계신 분들도 소스코드를 빌드하고 에러가 나서 Manifest에 컴포넌트를 추가해 준 경험이 있을지도 모르겠네요. 그런데 안드로이드에는 Acitivty, Service, Broa.. 2020. 9. 18.
[Kotlin] 기초 문법 정리 - 반복문을 알아보자 안녕하세요 VisionARy입니다. 오늘은 코틀린의 반복문에 대해서 알아보도록 하겠습니다. 이해를 돕기 위해 우리에게 익숙한 형태인 C++의 for문과 비교하여 살펴보겠습니다. # for(i = 0; i = 0; --i) !!! for (i in 9 downTo(0)) { print(i) } // 결과 9876543210 마찬가지로 step을 명시하지 않으면 기본값은 1이기 때문에 step(n)을 통해 step을 지정해 줄 수 있습니다. # for(auto i : list) 한편, 리스트에 담겨있는 아이템을 순회하기 위해서는 다음과 같이 직관적으로 사용할 수 있습니다. val list = arrayOf(0,1,2,3,4,5) for (i in list) { print(i) } // 결과 : 012345 .. 2020. 9. 17.
[Progammers] 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방 문제 링크 문제 문제 설명 solution() 함수의 인자인 record에는 띄어쓰기를 통해 구분된 op, id, name 정보가 담긴 string들이 있습니다. 예를 들어서 "Enter uid1234 John" 과 같은 문자열이 여러 개 들어 있는 것이지요. 이러한 문자열을 op, id, name으로 파싱을 해야하는데 어떻게하면 보다 간단히 할 수 있을까요? 만약에 c++에서 저러한 문자열을 직접 입력받는다면 아래와 같이 간단히 받을 수 있을 것입니다. cin >> op >> id >> name; 이 문제의 record에 담긴 string 역시 stringstream을 이용하면 위와 같은 방식으로 쉽게 처리할 수 있습니다. stringstream은 아래와 같이 string을 인자로 받아 stream안에.. 2020. 9. 9.
[Kotlin] 기초 문법 정리 - 변수와 널(null) 안녕하세요 VisionARy입니다. 이번 글에서는 코틀린의 변수에 대해서, 그리고 null값을 어떻게 다루는지 알아보겠습니다. # 변수선언 코틀린의 변수 선언에는 지난시간에 배운 것처럼 초기화 값으로 타입추론이 가능하기에 자료형의 생략이 가능합니다. 따라서 자료형을 생략하고 값의 수정여부에 따라 val 키워드나 var 키워드를 사용하여 선언할 수 있습니다. val (value) : val 키워드는 변수가 한 번 초기화 되면 수정이 불가능합니다 var (variable) : var 키워드는 그 이외에 값의 수정이 가능할 때 사용합니다 즉, val은 변수가 불변(immutable)일 때, var은 변수가 가변(mutable)일 때 사용하면 됩니다. val에 대해서는 아래에서 조금 더 자세히 다룹니다. 코틀린.. 2020. 9. 8.