[Android] Android Lifecycle과 action에 따른 콜백

Jay·2021년 3월 10일
0

Android

목록 보기
19/39
post-thumbnail

Q) 액티비티에서 뒤로가기 버튼을 누르면?

A)

  • Activity::onBackPressed() 콜백 함수가 호출된다.
    Androidx에선 androidx.activity.OnBackPressedCallback 추상 클래스를 제공한다.
  • OnBackPressedCallback::handleOnBackPressed() 메서드를 제공하고 있어서, 액티비티와의 의존성을 줄이고, Fragment에서 '뒤로 가기 버튼 로직'을 추가 할 수 있다.
  • OnBackPressedDispatcher.addCallback(LifecycleOwner, OnBackPressedCallback)을 사용해서 Fragment를 등록할 수 있다.

Q) 액티비티에서 홈 버튼을 눌렀을 때, 콜백 함수?

A)

  • 홈 버튼은 앱에서 특별히 제어 할 수 없다.
  • 하지만, 사용자가 홈 키를 눌러 사용중인 앱이 Background로 넘어가는 경우 Activity::onUserLeaveHint() 함수가 호출된다.
  • 앱을 사용중에 전화가 걸려올땐 호출 X
  • 사용자가 선택적으로 액티비티가 백그라운드로 이동하는 경우에만 호출.
  • onUserLeaveHint()는 onPause() 이전에 호출 된다.

Q) 현재 A 액티비티가 포그라운드 상태. 이 때 B액티비티로 전환 되면 발생하는 lifecycle Callback 함수를 나열해라.

A)

  • A : onPause()
    B : onCreate()
    B : onStart()
    B : onResume()
    A : onStop()

Q) B 액티비티에서 finish() 함수를 호출하게 되면 발생하는 Lifecycle 순서?

A)

  • B : onPause()
    A : onRestart()
    A : onStart()
    A : onResume()
    B : onStop()
    B : onDestroy()

액티비티의 3가지 상태

  • Active or Running 상태
    • 액티비티가 전면에서 실행되고 있을 때
    • 현재 Task에 대한 Activity Stack의 최상위에 존재할 때
  • Pause 상태
    • 다른 액티비티가 위에 존재 하지만 그 액티비티가 투명상태 혹은 전체 화면을 채우지 못해 아직은 이전 액티비티가 보이는 상태
    • dialog가 띄워지면 그렇겠지?
  • Stop 상태
    - 다른 Activity에 의해 완전히 가려져 더 이상 사용자에게 보여지지 않을 때

Launch Mode 4가지 ?

  • standard(default)

    • 인텐트 할 때마다 Activity를 새로 생성
  • singleTop

    • Intent 때마다 새로 생성하나, 동일한 Activity가 해당 테스크의 top에 있을 경우 새로 생성 하지 않고 기존에 있던 Activity 호출
    • 생명 주기는 onPause() -> onNewIntent() -> onResume()
  • singleTask

    • 하나의 Activity만 생성 되나, 다른 Activity가 해당 태스크의 일부가 되는 것을 허용한다.
  • singleInstance

    • 이 옵션도 singleTask와 비슷하나 그 어떤 Activity와도 섞이지 않고 유일한 Activity로 동작
    • task 안에 activity가 하나만 존재

profile
developer

0개의 댓글