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)
'개발정보 > 안드로이드' 카테고리의 다른 글
안드로이드 개발 레벨업 교과서 6장 Gradle (0) | 2019.01.15 |
---|---|
안드로이드 개발 레벨업 교과서 5장 MVP, MVVM (0) | 2019.01.08 |
안드로이드 개발 레벨업 교과서 4장 Support Library (0) | 2019.01.08 |
안드로이드 개발 레벨업 교과서 3장 ContentProvider, BroadCastReceiver (0) | 2019.01.08 |
안드로이드 개발 레벨업 교과서 1장 안드로이드 스튜디오 (0) | 2019.01.08 |