coding study/Android

[Android] Activity와 ViewBinding

computer engineering.초코나무쑵 2022. 4. 9. 15:52

2022.04.02

 

Activity

- 사용자 인터페이스 화면을 구성하는 컴포넌트

- 앱의 상태변화가 일어날 때마다 생명 주기의 특정 단계에 해당하는 특정 콜백 메서드를 호출

- xml로 작성된 UI를 그리는 창을 제공

 

onCreate() - 액티비티 만들 때 뷰 초기화, 리스너 설정 등 한번만 하는 작업을 이 곳에서 많이 해준다.

onStart() - 화면이 사용자에게 보여질 때 호출

onResume() - 화면이 사용자와 상호작용하는 시점에 호출

onPause() - 팝업, 다이얼로그로 인해 화면의 일부가 가려졌을 때 호출

onStop() - 화면 전환등으로 액티비티가 더 이상 사용자에게 보여지지 않을 때 호출

onDestory() - 액티비티가 사용자나 시스템에 의해 완전히 종료될 때 호출

 

 

ViewBinding

원래 findViewById(R.id.tv_name) 으로 ID가 있는 모든 뷰 참조를 binding.tvName 이런 식으로 간단히 접근이 가능해진다.

 

* 사용법

1) build.gradle에 추가해준다.

buildFeatures{
	viewBinding true
}

 

2) Activity에 viewBinding 적용해준다.

class SignUpActivity : AppCompatActivity() {
    private lateinit var binding: ActivitySignUpBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(binding.root)
        
}

: 이때 Binding class의 이름은 xml파일 이름을 UpperCamelCase 표기법으로 바꾸고 뒤에 Binding을 붙이면 된다.

--> ActivitySignUpBinding

: inflate()을 호출하여 해당 xml에 접근 가능하도록 객체를 생성하고, 생성한 root뷰를 setContentView에 넘겨준다.

 

3) 활용예시

 

그렇다면 if 조건문 예시를 들어보면

if (!binding.etId.text.isNullOrBlank() && !binding.etPw.text.isNullOrBlank())

이렇듯 etId, etPw id값을 가져오기 위해 findViewByID를 하지 않고 binding.Id값을 가져오면 된다!!!! :)

 

 

[ 회고 ]

 

약 6-7개월 전 코틀린으로 안드로이드 처음 배우면서 뷰바인딩을 알게 되었는데, 그저 그때는 findViewById로 각 아이디 값을 적어주지 않고 간단히 binding을 쓸 수 있다는 것에 신기했던 기억이 난다.

 

지금은 맛보기로 배운 후라 데이터바인딩, 뷰바인딩 등의 차이점도 알게 되고 가장 기본이자 중요한 생명주기를 더 자세히 알 수 있었다.

 

나에게 가장 발전된 모습이라 할 수 있는 것은,,, 모든 코드를 onCreate()에 작성하지 않고 함수를 만들어 가독성 좋은 코드 작성하는 것이다. 그리고 로직도 생각해보며 어떻게 해야 간단하게 짤 수 있는지,,, 생각도 한다...

더 나아갈 점은! 아키텍처 사용하며 적용하는 것 !!