AppCompatActivity를 이용할 수 없을 때는 AppCompatDelegate를 이용한다.

AppCompatDelegate delegate = new AppCompatDelegate(this);
delegate.setContentView(R.layout.activity_main);


액티비티 수명주기는 익히 알고 있고 사용하고 있지만 

처리 예에 대한 가이드가 있어서 작성한다.


액티비티 수명주기와 처리 예


 메서드명 

 시점 

 처리 예 

 onCreate

 생성 시

 초기화 처리나 뷰 생성 

 onStart

 비표시 시

 통신이나 센서 처리 시작 

 onRestart

 표시 시(재시작)

 보통은 X

 onResume

 최전면 표시

 애니메이션 등 화면 갱신

 onPause

 일부 표시 상태 

 화면갱신 (일시)정지, 리소스 해제

 onStop

 비표시 상태

 통신이나 센서 처리 정지 

 onDestory

 폐기 시

 필요없는 리소스 해제, 액티비티 참조 정리 


같은 앱에서 시작된 액티비티는 같은 백스택에 쌓인다

taskAffinity의 속성에 따라 소속되는 태스크가 달라진다

launchMode에 따라 액티비티 생성여부, 새로운 태스크에 속하는 등 시작이 다르다


액티비티 재생성시 onSaveInstanceState/onRestoreInstanceState 에서 저장하고 복원


액티비티 런치모드 

 launchMode 

 내용 

 standard

 매번 액티비티의 인스턴스 새로 생성 기본값 

 singleTop 

 같은 액티비티가 최상위에서 실행중이면 생성x onNewIntent 

 singleTask

 1개의 태스크에 인스턴스 존재, 같은 액티비티 있으면 생성x

 singleInstance 

 1개의 태스크에 1개의 인스턴스만, 다른 액티비티 포함x, 

 같은 액티비티 생성x 


싱글태스크에서 taskAffinity를 설정하면 여러개의 태스크에서 

singleTast, singleInstance 로 설정하면 startActivityForResult 불가

바로 RESULT_CANCELED가 반환


adb 백스택 확인 : adb shell dumpsys activity activities


화면 밀도 dp와 px


 밀도

 dp

 px

 ldpi

 1dp

 0.75px 

 mdpi

 1dp

 1px

 hdpi

 1dp

 1.5px

 xhdpi

 1dp 

 2px

 xxhdpi

 1dp 

 3px

 xxxhdpi

 1dp

 4px


fragment lifecycle

 메서드명 

 시점 

 실행하는 처리의 예

 onAttach

 액티비티 연결

 getActivity()는 널

 onCreate

 생성 시

 초기화

 onCreateView

 생성 시

 뷰 생성

 onActivityCreated

 생성 시

 초기화, 뷰 생성

 onStart

 비표시 상태

 표시 전 시점

 onResume

 표시 시

 필요한 애니메이션 등 화면 갱신

 onPause

 일부 표시 상태

 화면갱신 처리 (일시)정지, 리소스 해제

 onStop

 비표시 상태

 비표시된 시점

 onDestoryView

 폐기 시

 필요 없는 리소스 해제

 onDestory

 폐기 시

 필요 없는 리소스 해제

 onDetach

 폐기 시

 필요 없는 리소스 해제


아래 두줄은 블로거가 추가한 내용이다.

기존 생성된 프래그먼트가 액티비티에 추가될 땐 onCreateView 이하부터 시작된다.

onCreate에서 해줘야 다시 반복되지 않는다.


customview 에서 layout 대신에 merge태그를 쓰면 기존 레이아웃에 포함된다


ui를 갖지 않는 headless 프래그먼트 뷰 재생성시에도 재생성되지 않는다

네트워크 탐지등에 사용

setRetainInstance(true)

블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,