자바 어플 개발/안드로이도 스튜디오 개념

Activity

appmaster 2019. 7. 22. 01:12
  • 어플리케이션 구성요소
  • 어플리케이션은 여러개의 Activity로 구성된다.
  • Activity는 또 다른 Activity를 시작 할 수 있다.
  • 새로운 Activity가 시작되면 이전 Activity는 중단 되지만, '스택'에 보존하고 있다.

 

오버라이드해서 설정을 할때, "Log.d()"가 있는데 이것은 무슨뜻이냐면 System.out.print와 비슷한것이다. 개발할때 중간중간에 원하는 작업이 잘 작동이 되는지 확인차에 출력할때 그때 사용이 되는 것이다. 소괄호 안에는 ""을 이용해서 처음에는 키값을 넣고 그다음에는 벨류 값을 넣는다.

 

Activity는 앱의 한 화면이라고 생각하면 된다. 앱은 화면들의 연결로 구성되어 있고, 이러한 화면들을 액티비티라고 한다. 액티비티는 또다른 액티비티를 시작할 수 있다. 새로운 액티비티가 시작이되면 이전에 액티비티는 중단이 되지만 스택에 보전되어 있다. 

FAST CAMPUS 강의 자료 참조

 

이것을 LifeCycle이라고 한다. onCreate(), onStart(), onResume()이 상태를 지나야지 Activity running이라는 사용자의 input을 받을수 있는 상태가 된다. 앱을 사용할때 화면이 보여지는 상태를 말한다.

사용자가 앱을 종료시키거나 다른 앱으로 사용이 옮겨지는 경우에는 onPause(), onStop(), onDestroy()의 상태를 지나서 Activity shut down의 상태가 되어진다.

또는 onPause()상태에서 onResume()으로 가서 Activity running이 될 수 도 있고, onStop()에서 onRestart(), onStart(), onResume()을 통해서 다시 Activity running이 될수도 있는등 내부는 이러한 구조를 가지게 된다.

 

 

 

 

LifeCycle은 3가지로 구분 될 수 있다.

 

- 전체 수명 : onCreate()와 onDestroy() 사이

    * onCreate에서 설정을 수행한 다음 나머지 리소스를 모두 onDestroy에서 해제 해 주어야 한다. 모든 사이클을 칭하        는 수명이다.

 

- 가시적 수명 : onStart()와 onStrop() 사이

    * 사용자와 Activity와 상호작용을 할 수 있는 시기. 아뜻은 사용자가 Activity에게 input을 할 수 있다는 뜻이다. input        은 swipe, click, 앱종료등을 말한다.

 

- 전경수명 : onResume()과 onPause()사이

    * 현재 Activity가 다른 Activity보다 앞에 표시 되고, 사용자 입력도 집중된다. 

 

 

가시적 수명과 전경수명의 차이는 가시적수명은 어떻게서든지 앱이 보이기만 되는 상황을 말한다. 앱이 액티비티를 일부만 보여줘도 되고 전부 보여줘도 상관이 없다는 뜻이다. 예를들어 앱을 종료시키기 위해서 앱이 나열된 화면에서는 앱의 일부만 보이기 때문에 가시적수명이다. 

하지만 전경수명은 대충보여지기만 하면 안되고 전부 보여줘야 한다.  전경수명은 액티비가 화면에 전부 표시되기때문에 사용자가 활발히 사용되고 사용자의 입력이 집중이되는 시기이다.

 

 

 

Activity 상태저장

  • 1. onSaveInstanceState()를 구현하여 Activity 상태에 관한 중요한 정보를 보존 할 수 있다. (이 함수안에서 저장하고싶은 함수를 저장할 수 있다. 그리고 이함수안에서 저장하게 된다면 bundle로 저장이 된다.)
  • 2. Bundle로 저장이 된다.
  • 3. onCreate와 onRestoreInstanceState()에 전달이 된다. (번들로 보존하고 있다가 다시 화면으로 보여졌을때 onCreate 와 onStoreInstanceState로 전달된다.)
  • 4. 이전 상태가 복구 된다.

이러한 4가지 단계를 거치기 떄문에 다시 돌아와도 기억할 수 있는 것이다.

 

 

 

onCreate

  • 액티비티가 처음 생성되었을 때 호출 된다.
  • 정적 설정을 모두 수행 하여야 한다. (정적설정이란 액티비티가 켜졌을때 한번 설정하게되면 다시는 변하는 일이 없다.)
  • 뒤에 항상 onStart()가 호출된다.
  • setContentView()를 이곳에서 호출 해야 Activity의 사용자 인터페이스 레이아웃을 정의 할 수 있다. ( 가장중요한 것은 setContentView라는 메소드인데 이메소드에게 작성해놓은 sml파일을 전달해서 사용자 인터페이스를 받을 수 있는 레이아웃을 정해줄 수 있다. 즉 onCreate가 호출이 되고 setContentVeiw가 호출이 되고 이함수에게 sml을 전달해줘서 사용자 눈에 보이는 레이아웃 파일을 그리기 시작한다.)

 

 

onStart

  • Activity가 사용자에게 화면을 보여줄 준비가 되었을 때 호출된다.

 

 

onResume

  • Activity가 시작되고 사용자와 상호작용하기 직전에 호출이 된다.(input을 할 준비가 된 것이다.)

 

 

Activity Running

  • Activity가 사용자에게 화면을 보여줄 준비가 되었을 때 호출된다.
  • 사용자가 Activity와 상호작용이 가능한 시기
  • (Activity가 사용자에게 화면을 보여줄수도있고 input 을 받을 준비가 되어있다.)

 

 

onPause

  • 화면이 일부 가려진 상태
  • 시스템이 다른 Activity를 재개하기 직전에 호출이 된다.
  • 보통 데이터를 유지 하기 위해서 저장되지 않은 정보를 저장하는 용도로 사용이 된다.
  • 이 메소드가 반환이 될때 까지 다음 Activity가 실행이 되지 않기 때문에 빠르게 종료 시켜야 한다. (저장되지 않을 데이터들을 저장할떄는 반드시 빠른 시간안에 종료 시켜야 한다. onPause가 다음값을 배출하지 않으면 다음 액티비티가 실행되지 않기 때문이다.)
  • 화면이 다시 보여지게 되면 onResume()이 따라오고 사라지게 되면 onStop()이 따라온다.
  • onPause에서 onResume이 될때는 다시 액티비티 상태가 되는 것이고  onPause에서 onStop으로 되는 것은 액티비티가 셧다운이 되는 상황이 되는 것이다.

 

 

onStop()

  • Activity가 더이상 사용자에게 보여지지 않는 상태 (화면 전체가 가려진 상태이다.)
  • 사용자에게 다시 보여지게 되면 onRestart()가 뒤에 따라오고, 사라지게 되면 onDestroy()가 따라온다.

 

 

onDestroy()

  • Activity가 소멸되기 직전에 호출이 된다.
  • Activity의 마지막 life cycle이다.
  • 의도적으로 종료가 되었을 수도 있고, 시스템 resource를 절약하기 위해서 종료 되었을 수도 있다.
  • 의도적으로 종료되는 경우에는, 다른 액티비티로 전환이 되는 경우이고, 시스템에 의해서 강제로 종료가 되는 경우에는 앱이 백그라운드에 있었는데 핸드폰 OS에서 사용할 수 있는 리소스가 부족할 경우에는 사용하고 있는 앱을 회수해 갈 수 있다. 이때 onDestroy()가 호출이 되어서 강제 종료가 될 수도 있다.

'자바 어플 개발 > 안드로이도 스튜디오 개념' 카테고리의 다른 글

Stack  (0) 2019.07.23
Intent에 데이터를 input하는 방법  (0) 2019.07.22
Intent  (0) 2019.07.22