ANR (Activity Not Response) 액티비티가 응답하지 않는 오류 상황 액티비티를 작성할 때 ANR을 고려하지 않으면 앱이 수시로 종료될 수 있다 액티비티로 구성한 앱화면은 사용자 이벤트에 빠르게 반응해야 한다. 그런데 액티비티가 사용자 이벤트에 5초 이내에 반응하지 않으면 ANR 오류가 발생한다. 시스템에서 액티비티를 수행하는 수행 흐름을 메인 스레드 또는 UI 스레드라고 한다. 메인 스레드가 오래 걸리는 작업을 실행한다고 해서 그 자체로 오류가 발생하지는 않는다. 아무리 오래 걸려도 사용자가 액티비티 화면을 터치하지 않는 등 이벤트가 없다면 오류가 발생하지 않는다. 그러나 사용자가 언제 화면을 터치할 지 모르므로 액티비티를 작성할 때는 항상 ANR 오류를 고려해야 한다. 액티비티에서 시..
액티비티컴포넌트
생명주기 Life Cycle 액티비티가 생성되어 소멸하기까지의 과정 onCreate() - 전체 수명주기 동안 한번만 발생해야 하는 기본 애플리케이션 시작 로직 실행 (초기화, viewModel 연결 등) - savedInstanceState 매개변수를 수신하는 단계 onStart() - 이 시점부터 사용자가 Activity를 볼 수 있음 onResume() - 앱이 사용자와 상호작용하는 단계. 어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무름 - 활동이 onPause()에서 onResume() 상태로 돌아오면 시스템이 onResume() 메소드를 다시 한 번 호출 - 활동이 onResume() 상태로 전환될 때마다 필요한 다른 초기화 작업도 수행 onPause() - 다른 Ac..
인텐트란? 컴포넌트를 실행하려고 시스템에 전달하는 메시지 기능을 수행하는 함수를 제공하는 클래스가 아니라 데이터를 담는 클래스 이 때, 데이터는 컴포넌트를 실행하는 정보이며 이 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행된다 * 액티비티는 매니페스트 파일에 등록해야 한다. 액티비티 클래스 하나당 태그 하나로 등록해야 하며, name 속성은 생략 불가능하다. * 액티비티뿐만 아니라 서비스, 브로드캐스트 리시버, 콘텐츠 프로바이더도 매니페이스 파일에 등록해야 한다. 그 이유는 시스템에 컴포넌트를 알려야 하기 때문이다. 시스템은 런타임 때 매니페스트 파일의 정보를 참조하여 앱을 실행한다. val intent: Intent = Intent(this, DetailActivity::class.jav..