액티비티
, 서비스
, 콘텐츠 프로파이더
, 브로드캐스트 리시버
등 4개 컴포넌트 조합으로 개발액티비티
활성상태
: 현재 액티비티가 화면을 점유하고 출력되며, 사용자 이벤트 처리가 정상으로 처리된 상태일시정지상태
: 현재 액티비티가 일시적으로 사용 불가능한 상태비활성상태
: 현재 액티비티가 다른 액티비티로 인해 화면에서 완벽하게 가려진 상태생성된 액티비티: onCreate() -> onStart() -> onResume()
함수 호출되면서 활성상태가 된다.
활성 상태 = 사용자에게 액티비티 화면이 보임
onResume() 호출 전까지 액티비티 화면 내용 출력해야한다.
&&& 포켓몬고 처럼 화면 위 포켓몬 출력하는 코드: addContentView()
protected void onResume(){
...
setContentView(R.layout.activity_main)
...
addContentView(viewnane, params)
}
리소스를 점유, 메모리 확보, 네트워킹 발생
때문= onRestart() -> onStart() -> onResume()
함수 호출됨액티비티 종료되더라도 다시 실행될때 그대로 이용해야할 때가 있다.
데이터 영속화와 관련, 앱 종료되었을 때 데이터를 유실하지 않고 저장했다 가져와야함(ex.회전)
회전할때: onPause() -> onStop() -> onDestory() < 데이터가 유실된다
>
데이터를 저장했다가 시작될 때 복원해주는 생명주기 함수들이 존재
onPause() -> onSaveInstanceState()
-> onStop() -> onDestory() 호출 후 종료
다시 액티비티 시작하면서: onCreate() -> onStart() -> onRestoreInsatanceState()
-> onResume() 실행된다.
데이터 저장, 복원에 사용 함수: onCreate(), onRestoreInstanceState(), onSaveInstanceState()
함수에서 데이터를 저장하는 방법: Bundle
사용
onRestoreInstanceState()
사용해 가져온다.public void onSaveInstanceState(Bundle outState, //PersistableBundle outPersistentState){
super.onSaveInstanceState(outState, // outPersistentState);
...
}
public void onRestoreInsatanceState(Bundle savedInstanceState, // PersistableBundle outPersistentState){
super.onRestoreInsatanceState(savedInstanceState, // outPersistentState);
...
}
매개변수가 2개라면 Bundle에 저장된 데이터가 없으면 호출되지 않음