본문 바로가기

공부/Android11

Android - findViewById vs kotlinx-synthetic vs viewBinding findViewById와 kotlin-synthetic의 문제점은 오래전부터 알려져 왔고 요새는 Compose를 쓰는 게 아니라면 거의 모든 프로젝트에서 viewBinding아니면 dataBinding을 쓴다.오늘은 findViewById와 kotlin-synthetic의 장단점과 왜 이걸 안 쓰고 viewBinding을 사용하는지 알아보자findViewByIdtextView = findViewById(R.id.textview)일단 코드가 길다. ‘R.id’라는 부분이 중복된다.하지만 더 치명적인 단점이 있는데 바로 null과 type 안정성이 없다는 것이다.null-safety 하지 않다R.id.OOO으로 view의 id에 접근을 하는 경우 해당 activity혹은 fragment에 대응되는 view .. 2024. 6. 19.
Android - android:exported=”true”는 무엇일까? AndroidManifest.xml 파일에서 컴포넌트 코드를 보면 종종 exported속성이 설정 되어 있는 것을 볼 수 있다. 도대체 android:exported=”true”는 뭘까? 이번 포스팅에서 알아보자. ... Android 공식 문서에 보면 다음과 같이 나와있다.android:exported 속성은 다른 애플리케이션의 구성요소에서 실행할 수 있는 구성요소(활동, 서비스, broadcast receiver 등)인지를 설정합니다.true인 경우 모든 앱이 활동에 액세스할 수 있고 활동의 정확한 클래스 이름으로 활동을 실행할 수 있습니다.false인 경우 같은 애플리케이션에 있는 구성요소나 동일한 사용자 ID를 가진 애플리케이션 또는 권한이 있는 시스.. 2024. 6. 15.
Android - 인텐트(Intent) 완전 정복 인텐트란 무엇인가?지난 글에서 컴포넌트(Component)는 독립적이고 그렇기 때문에 이 컴포넌트는 시스템에 의해 실행된다고 말했다. 컴포넌트에서 다른 컴포넌트를 직접적으로 제어하지 않는다는 말이다.이때 시스템에게 ‘OO컴포넌트 좀 제어해주세요~’라고 메세지를 보내야 하는데 이 메세지가 바로 인텐트(Intent)이다. 인텐트에 데이터를 담아서 다른 컴포넌트로 보낼 수도 있다.인텐트 사용해보기인텐트를 사용하기 전에 두 액티비티를 만들어주자. 두 액티비티 간의 화면 전환에서 인텐트를 사용할 것이기 때문이다. 화면은 어떻게 만들든 상관없지만 나는 MainActivity에 화면 전환용 버튼을 그렸다.코드는 버튼을 클릭하면 (1) 인텐트 생성 후 (2) startActi.. 2024. 6. 14.
Android - Android의 4대 컴포넌트 완전 정복 컴포넌트(Component)는 Android앱 개발의 핵심이다.앱 개발의 전반적인 구조를 알려면 컴포넌트를 알아야 한다. 오늘은 이런 컴포넌트가 뭐하는 친구들인지 알아보자.컴포넌트의 정의컴포넌트. 단어 그 자체로 요소이다. Android앱은 이런 컴포넌트(요소)들로 구성이 된다.이런 너무나 추상적 컴포넌트라는 녀석을 Java와 Kotlin 코드에서는 클래스로 구현을 할 수 있다. 즉, 하나의 클래스가 하나의 컴포넌트가 될 수 있다는 뜻이다. 모든 클래스가 컴포넌트인 것은 아니다.이걸 이해하기 위해 생명주기라는 것을 알아야 한다.쉽게 말해 생명주기는 사용자가 앱을 켜고 끄고 다시 돌아오고 이런 상태를 말한다.컴포넌트 클래스는 Android의 생명주기를 따라간다.하지만 일반 클래스는 개발자가 그 생명주기를 .. 2024. 6. 13.