안드로이드 개발자가 기술 면접을 보는 경우에 나올 수 있는 질문들을 학습 및 정리 하는 글입니다
이해한 정보들을 간략하게 정리 해놓은 글이기 때문에 더 깊게 알고 싶으신 분들은 따로 검색을 하셔서 찾아 보시는걸 추천 드립니다!
Q. Intent란 무엇인가?
A.
어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 메시지 객체이다
액티비티 시작
startActivity()
서비스 시작
startService(), bindService(), jobScheduler
브로드캐스트 전달
sendBroadcast(), sendOrderedBroadcast() 등에서 사용 된다
인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐드(Implicit Intent) 2가지로 구분 할 수 있다
명시적 인텐트(Explicit Intent) : 호출될 대상을 명확하게 지정한 경우
암시적 인텐드(Implicit Intent) : 특정 컴포넌트의 클래스명 없이 어떤 작업을 수행할 것인지만 선언한 경우
//명시적 인텐트
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)
//암시적 인텐트 : 지도보기, 연락처보기, 인터넷, SNS 공유 등등.
val intent = Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com/"))
startActivity(intent)
Q. PendingIntent란 무엇인가?
A.
PendingIntent는 Intent를 가지고 있는 클래스로, 기본 목적은 다른 애플리케이션(다른 프로세스)의 권한을 허가하여 가지고 있는 Intent를 마치 본인 앱의 프로세스에서 실행하는 것처럼 사용하게 하는 것이다.
쉽게 예를 들어 앱 내부적으로 어떤 리소스를 다운로드 하는 경우 사용자들은 다운로드가 완료 될때까지 기다리지 않고 카카오톡 등 다른 앱을 사용 하고 있을 것이다 이때 개발자들은 다운로드가 완료되면 알람이 오도록 구현을 하는데 일반 Intent를 사용하게 된다면 다른 앱에서 사용하는 Intent이기 때문에 작동하지 않는다 하지만 PendingIntent는 권한을 허가하여 특정 시점에 실행 가능하도록 만들어졌기 때문에 사용 가능하다