본문 바로가기

Android7

[Android] 안드로이드 4대 컴포넌트 - 액티비티 액티비티는 사용자와 상호작용을 담당하는 컴포넌트 입니다. 사용자가 무엇인가를 하기 위해서는 반드시 기기와 상호작용을 해야합니다. 따라서 액티비티는 유저가 앱을 터치하고, 클릭하는 등의 이벤트를 받는 창을 만들어야 합니다. # 액티비티 스택 유저의 관점에서 어플리케이션은 처음 시작하는 액티비티로부터 일련의 액티비티들이 이어진다고 볼 수 있습니다. 시스템은 여러 액티비티들을 스택에 넣어 보관하여 사용자의 Context를 저장하게 됩니다. 마치 Context Swtiching이 발생할 때 PCB에 프로세스의 Context를 저장하는 것과 비슷합니다. 액티비티의 스택은 따로 포스팅을 해야 할 중요한 내용이라서 다른 글에서 다루도록 하겠습니다. 간단히 예를 들면 액티비티를 이동하면 이전의 액티비티는 차곡차곡 스택.. 2020. 11. 6.
[Android] Android 프로젝트 빌드 안드로이드 스튜디오를 이용해 안드로이드 앱 개발을 할 때 실제로 기기를 연결하거나 가상의 애뮬레이터를 통해서 다양한 기기에 대해서 직접 앱을 테스트 할 수 있습니다. 앱의 실행은 어떠한 과정을 거쳐서 실행시킬 수 있는 것일까요? 안드로이드는 리눅스 커널을 기반으로, 저수준의 하드웨어, 드라이버, 전력관리 등을 수행하는 풀스택 소프트웨어입니다. 리눅스 커널위에 C/C++ 라이브러리와 SQLite, 안드로이드의 Core 라이브러리, Android Runtime 등이 있습니다. 그 위에 안드로이드 프레임워크가 있으며 우리가 만드는 앱은 프레임워크가 제공하는 여러 클래스와 서비스를 이용하여 프레임워크 위의 레이어에서 작동합니다. 안드로이드 스튜디오에서 앱을 실행하면 작성한 코드는 javac 컴파일러에 의해서 바.. 2020. 11. 6.
[Android] Android Threads 자바로 작성한 프로그램은 JVM(안드로이드의 경우 ART)이 프로그램의 시작점에 해당하는 메인함수를 찾아 실행합니다. 그래서 일반적으로 자바로 프로그램을 작성해야 한다면 main( ) 함수를 구현해야 합니다. 하지만 안드로이드의 경우 메인함수가 안드로이드 프레임워크의 "android.app.ActivityThread" 클래스에 구현되어 있기 때문에 개발자가 직접 메인함수를 작성하지 않고 Manifest 파일에서 액티비티 중 하나를 Launcher로 지정함으로써 해당 액티비티를 어플리케이션의 진입점(Entry Point) 으로 만들 수 있습니다. 메인 스레드(Main Thread) 안드로이드의 진입점(Entry Point)을 통해서 어플리케이션이 실행되면, 안드로이드 시스템은 처음에 하나의 스레드로 애플리.. 2020. 10. 2.
[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.