본문 바로가기

전체 글134

15-1 서비스 컴포넌트 액티비티 컴포넌트, 브로드캐스트 리시버 컴포넌트에 이어 세번째 컴포넌트를 알아보자. 서비스는 오래 걸리는 작업을 백그라운드에서 처리할 수 있게 해 주는 컴포넌트이다. 따라서 서비스에 화면을 구현하지는 않는다. 그리고 서비스 역시 안드로이드의 컴포넌트이므로 생명주기를 시스템에서 관리한다. 서비스 생성과 실행 서비스 컴포넌트는 Service 클래스를 상속받아서 작성한다. 서비스에는 다양한 생명주기 함수를 재정의할 수 있지만 onBind()는 필수이다. // 서비스 컴포넌트 생성 class MyService : Service() { // 서비스 컴포넌트 위해 서비스 클래스 상속받고 override fun onBind(intent: Intent): IBinder? { // 필수인 onBind() 생명주기 함수 .. 2023. 7. 6.
14-2 시스템 상태 파악하기 시스템에서 발생하는 인텐트는 여러 종류가 있으며 부팅 완료, 화면 켬/끔, 배터리 상태 등이 대표적이다. 이러한 상황에서 앱의 리시버를 어떻게 실행하는지 알아보자. 부팅 완료 만약 전원을 누르고 앱에서 부팅이 완료될 때 특정한 작업을 수행(목적)하고 싶다면 1️⃣브로드캐스트 리시버를 만들고 2️⃣매니페스트 파일에 인텐트 필터를 구성해서 등록한다. 부팅이 완료되면 시스템에서는 android.intent.action.BOOT_COMPLETED라는 액션 문자열을 포함하는 인텐트가 발생한다. 이때 실행하고 싶은 리시버에는 의 name 속성에 똑같은 액션 문자열을 똑같이 등록하면 된다. // 브로드캐스트 리시버와 인텐트 필터 등록 // 인텐트 필터 등록 // 부팅 완료될 때 발생하는 인텐트의 액션문자열을 브로드캐.. 2023. 7. 3.
14-1 브로드캐스트 리시버 이해하기 브로드캐스트 리시버는 흔히 이벤트 모델로 실행되는 컴포넌트라고 정의한다. 여기서 이벤트란 액티비티를 다룰 때 살펴본 사용자 이벤트가 아니라 부팅이 완료되는 것과 같은 시스템의 특정한 상황을 말한다. 시스템의 어떤 이벤트가 발생하면 브로드캐스트 리시버를 실행해 앱이 해당 상황에 맞게 동작하도록 할 수 있다. 브로드캐스트 리시버(broadcast receiver)는 줄여서 리시버라고도 하며 직역하면 '방송 수신기'이다. 즉, 시스템에서 특정한 상황을 알리는 방송을 할 때 이를 받아서 처리하는 수신기를 앱에 장착하는 것이다. 이 수신기도 액티비티처럼 안드로이드의 컴포넌트이므로 인텐트를 시스템에 전달함으로써 실행한다. 브로드캐스트 리시버 만들기 브로드캐스트 리시버를 만들려면 BroadcastReceiver를 상.. 2023. 7. 3.
섹션 0. 들어가기에 앞서 import하는 법 예를 들어 intent 쓰면 빨간 줄 뜸 거기서 option+enter(맥 버전) 누르면 임포트 됨 레이아웃 글씨 색 설정 res-layout-activity_main.xml 에서 글자크기와 글자색 설정할 수 있음 android:textColor=""까지만 치면 밑에 black/white 선택 뜰수도 있는데 안뜨면 아래와 같이 설정할 수 있음 android:textSize="58dp" android:textColor="color/black" android:textColor="#000000" // 글자색 검은색 android:textColor="#ffffff" // 글자색 흰색 못외우겠으면 구글에 검정색/흰색 hex를 검색하면 색깔코드 찾을 수 있음 또는 res-values-colors.. 2023. 7. 2.
13-5 액티비티 ANR 문제와 코루틴 ANR 문제란? 액티비티 컴포넌트에서 마지막으로 다룰 주제는 ANR이다. ANR(activiy not response)은 액티비티가 응답하지 않는 오류 상황을 의미한다. 액티비티를 작성할 때 ANR을 고려하지 않으면 앱이 수시로 종료될 수 있다. 시스템에서 액티비티를 실행하는 수행 흐름을 메인 스레드 또는 화면을 출력하는 수행 흐름이라는 의미에서 UI 스레드라고 한다. 메인 스레드가 오래 걸리는 작업을 실행한다고 그 자체로 오류가 생기는 건 아니지만, 사용자가 액티비티 화면을 터치하는 등 이벤트가 발생하면 오류가 생길 수 있으므로 액티비티를 작성할 때 항상 ANR 오류를 고려해야 한다. 액티비티에서 시간이 오래 걸리는 대표적인 작업은 서버와 통신하는 네트워크이다. 정상적인 상황에서는 서버와 연결하여 데이.. 2023. 7. 1.
13-4 태스크 관리 태스크(task) 관리란 액티비티를 어떻게 생성하고 관리하는지를 제어하는 일을 의미한다. 시스템에는 액티비티의 태스크를 유지하는 기본 규칙이 있으며 일반적으로는 이 기본 규칙을 그대로 이용하지만 특정한 상황에서 개발자가 액티비티의 태스크를 관리해야 한다면 설정을 추가할 수도 있다. 시스템에서 태스크 관리 액티비티 태스크란? 앱이 실행될 때 시스템에서 액티비티의 각종 정보를 저장하는 공간 A 앱이 A_OneActivitiy, A_TwoActivity 두 액티비티로 구성되어있다고 가정하자. 사용자가 앱을 실행해 A_OneActivity 화면이 나오고 다시 A_OneActivity에서 인텐트로 A_TwoActivity를 실행했다고 생각해보자. 그러면 액티비티 객체가 2개가 생성되고 시스템은 이 액티비티가 실행.. 2023. 7. 1.