생명주기
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("6weeks","First_onCreate")
setContentView(R.layout.activity_first)
}
override fun onStart() {
super.onStart()
Log.d("6weeks!","First_onStart")
}
override fun onResume() {
super.onResume()
Log.d("6weeks!","First_onResume")
}
override fun onPause() {
super.onPause()
Log.d("6weeks!", "First_onPause")
}
override fun onStop() {
super.onStop()
Log.d("6weeks!","First_onStop")
}
override fun onDestroy() {
super.onDestroy()
Log.d("6weeks!","First_onDestroy")
}
}
1. 위와같이 생명주기와 관련된 메서드들을 모두 override한 뒤 Log.d를 이용하면 LogCat창에서 현재 상태를 확인할 수 있다.
2. Log.d("ㄱ","ㄴ") :
ㄱ에 들어갈 내용은 위에 빨간색 동그라미쳐진곳에서 해당 로그와관련된 정보를 검색할 키값이다.
ㄴ에 들어갈 내용은 실제 로그에 출력되는 내용이다.
Log.d("6weeks!","First_onStart")
3. 예를들어 위 코드에서 "6weeks!"라는 텍스트를 위의 빨간색 동그라미에 검색하면 Log.d에 6weeks!을 입력한 모든 로그가 LogCat창에 출력된다. 그리고 구분짓기위해서 "First_onStart"를 써줬는데 onStart함수 내부에 해당 로그를 써줬으므로 onStart함수가 호출될때 "First_onDestroy"라는 텍스트를 출력한다는 말이다.
4. 처음 액티비티를 실행하면 onCreat, onStart, onResume이 출력되고
5. startActivity()를 이용해 다른 액티비티로 이동한다면 onPause, onStop
6. 되돌아온다면 다시 onStart, onResume이 출력될것이다.
7. 이걸 왜하냐면 우리가 개발하는 앱은 한개의 Activity가 여러개 열릴 수 있다. 무슨말이냐면 눈에는 보이지 않지만 내가 현재 보고있는 화면이 똑같이 여러장이 겹쳐있을 수 있다는말이다.
8. 1번페이지가 여러개 열려있는 상황, 1번페이지가 destroy되어 없어진상황 등 우리 눈에 보이지 않지만 현재 내가보고있는 페이지 뒤로 어떤페이지가 숨겨져있는지 알 수 없다. 그래서 Log를 이용해서 현재 페이지 상태를 알 수 있다.
Log
val getDialog = result.getParcelableArrayList<AddMemberData>("FromDialog")
Log.d("ContactProjects", "다이얼로그에서 다시 받아온 데이터 : ${getDialog}")
1. 예를들어 위 코드는 FromDialog키에 담긴 데이터를 받아와서 getDialog라는 변수에 넣어주고, 로그를 찍어보는 코드이다.
2. 만약 LogCat에 아무것도 찍히지 않는다면 애초에 데이터가 안넘어온 것일테고, 빈칸이나 null값으로 찍힌다면 넘어오긴했는데 넘겨주는쪽에서 재대로된 데이터를 넘겨준게 아닐것이다.
3. 이런식으로 현재 데이터가 어디에서 어디까지 넘어갔고 현재 상태를 알 수 있으므로 매우 유용하다.
결론
1. 데이터를 정상적으로 담아서 넘기고, 정상적으로 받는 로그가 찍히는데, 기존의 액티비티로 데이터가 전달되는건지, 새로 생성된 액티비티로 데이터가 전달되는지 생명주기와 Log를 이용해서 확인이 가능하다.
2. 데이터가 현재 어디 까지 전달되었는지 확인 할 수 있다면 문제 해결에 엄청난 도움이 된다.
정리
1. 액티비티를 처음 실행하면 onCreate, onStart, onResume이 호출되고,
2. startActivity()를 이용해서 다른 액티비티로 이동하면 onPause가 호출이되고 이동된 액티비티가 실행되면 onStop이 호출됩니다.
3. 다시 이전 액티비티로 돌아왔을때는
- 만약 첫 액티비티가 종료가 되었다면 onCreate,onStart, onResume이 호출되고,
- 첫 액티비티가 종료되지 않았다면 onStart, onResume이 호출됩니다.
썸네일 출처
'TIL, WIL(일기)' 카테고리의 다른 글
230914 Fragment 통신 & parcelize (1) | 2023.09.14 |
---|---|
230913 ViewPager2, TabLayout (1) | 2023.09.13 |
230911 연락처 앱 만들기 프로젝트를 마무리하며 (0) | 2023.09.11 |
230904 간단한 원격브랜치 conflict (1) | 2023.09.04 |
230831 리사이클러뷰 (0) | 2023.08.31 |