반응형 개발/Android15 Room Library, Paging Library Android SQLite Database 안드로이드에서는 SQLite 데이터베이스를 임베디드 데이터베이스로 제공한다. SQLite DB는 경량급(Light-weight) 관계형 데이터베이스다. 표준 SQL을 지원할 뿐만 아니라 데이터 조회 속도가 빨라 안드로이드, 아이폰 등에서 널리 사용한다. Android Architecture Components Google I/O 2017에서 안드로이드 개발에 필요한 새로운 라이브러리들을 Android Architecture Components(AAC)로 묶어 발표 구글은 안드로이드 앱을 개발하면서 자주 만날 수 있는 문제들을 쉽게 해결할 수 있는 가이드를 개발자들에게 제공하기 위해 AAC를 제공한다. AAC는 5개의 라이브러리로 구성한다. Lifecycles L.. 개발/Android 2022. 6. 2. 코루틴 Coroutine 안드로이드에서 프로세스 애플리케이션이 시작되면 안드로이드 시스템은 애플리케이션을 위한 새로운 프로세스와 스레드를 생성한다. 기본적으로 애플리케이션 안의 모든 컴포넌트들은 동일한 프로세스의 동일한 스레드에서 실행한다. 이 기본적인 스레드를 메인 스레드라고 하며, 메인 스레드는 위젯에게 이벤트를 전달하거나 화면을 그리는 등 UI 관련 모든 작업을 담당한다. 문제점 애플리케이션에서 많은 작업을 해야 한다면 이와 같은 단일 스레드 모델은 애플리케이션의 성능을 저하시킨다. 대기 시간이 길어지는 네트워크 요청 등의 기능을 수행할 때는 화면에 보이는 UI도 멈춤 상태인 ANR(Application Not Responding) 오류가 발생한다. 해결방안으로는 하나의 프로세스 안에서 여러 개의 작업을 동시에 할 수 있는.. 개발/Android 2022. 6. 1. 네비게이션 컴포넌트 네비게이션 컴포넌트 네비게이션 컴포넌트는 앱의 화면 전환을 쉽게 구현하고 화면 흐름을 시각화해서 보여주는 라이브러리다. 개발자가 정의한 UI Graph를 기반으로 하면 간의 관계를 한 눈에 볼 수 있다. Back Stack 안드로이드에서는 액티비티를 백 스택을 통해 관리 - 백 스택은 네비게이션의 상태를 나타낸다. 액티비티의 백 스택은 시작점을 가지며, open된 순서대로 스택을 쌓이고, 현재 화면은 스택의 최상단에 위치한다. 새로 액티비티가 생성이 되면 백 스택에 Push가 되면서 기존에 있던 액티비티는 아래로 감춰지게 되고, 뒤로가기를 눌러서 현재 액티비티를 종료시키면, 종료된 액티비티가 pop되면서 그 아래에 있던 액티비티가 push되어 포그라운드되는 구조다. 네비게이션 네비게이션은 사용자가 앱 내.. 개발/Android 2022. 6. 1. ViewModel, LiveData ViewModel ViewModel은 Activity 및 Fragment의 생명주기를 고려하여 UI 관련 데이터를 저장하고 관리한다. Activity는 Activity가 끝날 때까지 그리고 Fragment는 Fragment가 분리될 때까지 데이터를 메모리에서 유지한다. Activity 및 Fragment의 생명 주기와 관계없이 데이터를 유지한다. 화면 회전과 같이 구성을 변경 할때도 데이터를 유지할 수 있다. ViewModel lifecycle Activity의 onCreate()메서드에 처음 호출할 때 ViewModel을 요청 및 생성한다. 시스템은 액티비티 기간 내내(예: 기기 화면이 회전될 때) onCreate() 메서드를 여러 번 호출한다. ViewModel은 액티비티가 소멸될 때까지 존재한다. .. 개발/Android 2022. 6. 1. Fragment 프래그먼트 Fragment (프래그먼트) 프래그먼트 는 일종의 컴포넌트 같은 개념이다. 여러 개의 프래그먼트를 하나의 액티비티에 결합하여 창이 여러 개인 UI를 빌드할 수 있다. 그리고 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 액티비티처럼 레이아웃을 가진 독립적인 개체로서, 자체적인 생명주기를 가지고 액티비티 실행 중에 화면에 동적으로 추가되거나 다른 프래그먼트로 교체가 가능하다. 한 개의 액티비티에 들어가는 화면 요소를 프래그먼트 단위로 나누어 관리하기 때문에 레이아웃을 분리 관리할 수 있고, 액티비티의 화면 구성을 위한 레이아웃의 복잡도도 줄일 수 있다. 프래그먼트는 항상 액티비티 내에서 호스팅되어야 하며, 해당 프래그먼트의 생명주기는 호스트 액티비티의 생명주기에 직접적으로 영향.. 개발/Android 2022. 5. 31. 선택위젯(어댑터뷰(AdapterView)) 선택위젯 안드로이드에서 여러 아이템 중의 하나를 선택하는 위젯을 선택 위젯이라 부른다. 배열이나 파일, 데이터베이스에 저장된 데이터를 화면에 리스트 형식으로 표시할 때 사용한다. 선택 위젯에 데이터를 공급하고 관리하는 클래스는 어댑터(Adapter) 클래스다. 선택 위젯은 어댑터에서 데이터를 관리하고, 화면에 보이는 아이텀 뷰(UI)도 어댑터에서 만들어 제공한다. 선택 위젯에는 리스트 뷰, 리사이클러뷰, 스피너, 뷰페이저 등이 있다 선택 위젯은 한 위젯 안에서 여러 개의 데이터를 보여주고 그 중 하나를 선택할 때 원하는 기능을 실행할 수 있는 위젯이다. 선택 위젯에 들어있는 하나 하나의 뷰를 '아이템'이라 부르는데, 이 '아이템'을 위한 데이터는 '어댑터'에서 관리한다. 어댑터 (Adapter) 어댑터의.. 개발/Android 2022. 4. 25. 액티비티 수명주기 액티비티 생명주기 액티비티는 실행부터 종료까지 많은 상태 변화를 거치며, 상태가 변할 때마다 생명주기 함수가 자동으로 호출된다. 액티비티의 상태는 활성 상태(Activity Running), 일시 중지 상태(Paused), 비활성 상태(Stopped)로 구분 액티비티의 생명주기는 액티비티의 생성부터 소멸까지의 주기를 말한다. 상태 설명 활성 상태(Running) (실행) 화면 상에 액티비티가 보이면서 실행되어 있는 상태. 액티비티 스택의 최상위에 있으며 포커스를 가지고 있다. onCreate() -> onStrat() -> onResume() 함수가 호출 일시중지 상태(Paused) 액티비티가 여전히 화면에 보이지만 포커스를 잃은 상태 현재 액티비티가 일시적으로 사용이 불가능한 상태 onPause() 함.. 개발/Android 2022. 4. 24. 안드로이드 시스템 스택 관리 안드로이드 시스템은 액티비티를 ActivityManager를 통해 Activity Stack으로 관리한다. 스택을 제어하는 방법 1. Intent의 플래그(Flag)로 제어하는 방법 액티비티를 실행하는 인텐트에 플래그를 이용해서, 스택 목록에 어떻게 올라가야 한다고 명시하는 방법이다. 2. LaunchMode 속성 설정 액티비티를 등록하는 AndroidManifest.xml 파일의 설정으로, 액티비티가 실행될 때 스택 목록에 어떻게 올라가야 한다고 명시하는 방법 새로운 액티비티가 실행되면 이전의 액티비티는 정지된 상태로 액티비티 스택에 저장되고, 새로운 액티비티가 화면에 보인다. 화면에 보이던 액티비티가 없어지면 액티비티 스택의 가장 위에 있는 액티비티가 화면에 보이면서 동작하게 된다. 만약, 동일한 액.. 개발/Android 2022. 4. 24. 인텐트와 데이터 전달 이전 시간 실습에서는 startActivity() 메소드는 단방향이다. 즉 데이터를 주고 받을 수 없다. 아래 링크에서 확인할 수 있다. https://devdebin.tistory.com/151?category=1014847 Intent(인텐트) 안드로이드 애플리케이션은 액티비티, 서비스, 브로드캐스트 수신자, 콘텐츠 제공자로 구성된다. 콘텐츠 제공자 : 애플리케이션간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 컴포 devdebin.tistory.com 그러면 어떻게 인텐트를 통해서 데이터를 주고 받을까? 새로운 액티비티를 띄우고, 액티비티간 데이터를 주고 받기 위해서는 startActivityForResult()를 사용해야 한다고 한다. 데이터는 인텐트에 담아 전달하며, 요청 코드는 각각의 .. 개발/Android 2022. 4. 23. Intent(인텐트) 안드로이드 애플리케이션은 액티비티, 서비스, 브로드캐스트 수신자, 콘텐츠 제공자로 구성된다. 콘텐츠 제공자 : 애플리케이션간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 컴포넌트다. 액티비티 : 사용자 인터페이스 화면을 구성하는 컴포넌트다. 메모리 관리를 위해 LifeCycle이 있으며 스택구조로 여러 개의 액티비티가 쌓인다. 서비스 : 백그라운드에서 실행되는 컴포넌트, 사용자 인터페이스를 가지지 않는다. 브로드캐스트 수신자 : 시스템으로부터 특정 브로드캐스트를 수신하거나 반응하는 컴포넌트 사용자 인터페이스를 가지지 않는다. 이 4개의 컴포넌트의 액션, 데이터 등을 전달하는 메시지 역할을 하는 것이 인텐트(Intent)다. 즉 애플리케이션 간의 메시지를 주고 받기 위한 용도로 사용한다. 인텐트(I.. 개발/Android 2022. 4. 23. Context Android Context Context는 Android system에서 제공하는 추상 클래스로, application 환경에 대한 전역 정보를 접근하기 위한 인터페이스다. Android App startup process Android에서는 application과 process가 독립적으로 운영되기 때문에, application은 ActivityManagerService에서, process는 OS에서 관리한다. ActivityManagerService는 각 application을 특정 토큰 키/값 (id)으로 구분하여 여러 application의 전역 정보를 관리한다. 더 구체적인 Context의 역할 ActivityManagerService에 접근하기 위한 인터페이스(브릿지) 역할 각 applica.. 개발/Android 2022. 4. 23. 레이아웃 인플레이션 안드로이드에서 어떤 뷰를 Activity(화면)에 띄우려면 반드시 객체화가 되어야 한다. 인플레이션이란 XML 레이아웃에 정의된 내용(뷰)이 메모리에 객체화되는 과정이다. 이 과정을 간단하게 말하면 UI를 디자인할 XML 파일 작성을 완료하면, 이후 setContentView 메소드에서 XML 레이아웃 파일을 매핑한다. 그러면 xml 파일을 View로 만들어서 Activity(화면) 위에 보여준다. 그러면 setContentView는 무슨 역할을 할까? Activity 화면에 나타날 뷰를 지정한다. 화면 전체를 설정하는 역할이지 부분 화면 설정은 불가능하다. XML 레이아웃 내용을 메모리에 객체화시킨다. 이것이 인플레이션(inflation)이다. 그렇다면 부분 화면 인플레이션은 어떻게 진행할까? setC.. 개발/Android 2022. 4. 23. 이전 1 2 다음 반응형