안드로이드 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다.
- 액티비티 : 화면을 구성하는 가장 기본적인 컴포넌트
- 서비스 : 백그라운드에서 동작하는 컴포넌트
- 브로드캐스트 리시버 : 문자 메시지, 배터리, 네트워크 환경 변화 등 방송 신호를 받아서 처리하는 것
- 콘텐트 프로바이더 : 응용 프로그램 사이 데이터를 공유하기 위한 컴포넌트
1. 액티비티 이동하기
액티비티란 쉽게 말해 안드로이드에서 눈에 보이는 화면을 의미한다.
인텐트(intent)란 안드로이드 4대 컴포넌트가 서로 데이터를 주고받기 위한 메시지 객체이다.
- 명시적 인텐트 : 액티비티 이름을 명확하게 지정할 때 사용하는 방법
- 암시적 인텐트 : 약속된 액션을 지정하여 안드로이드에서 제공하는 기종의 응용 프로그램을 실행하는 것
명시적 인텐트
버튼을 눌렀을 시 MainActivity에서 secondActivity로 이동하기 위해 intent를 생성하고 새로운 액티비티 화면을 띄우는 startActivity() 메서드를 이용해 액티비티 이동
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val intent = Intent(this, secondActivity::class.java)
startActivity(intent)
}
}
}
*액티비티를 추가했을 시 manifests에 <application> 안에 <activity android:name=".secondActivity"></activity> 한 줄을 추가해야 된다.
암시적 인텐트
암시적 인텐트로는 전화 걸기, 웹 브라우저 열기, 구글 맵 열기, 메시지 보내기, 카메라 등이 있다.
// 웹 브라우저 열기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))
startActivity(intent)
// 전화 걸기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("tel:119"))
startActivity(intent)
//구글 맵 열기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://maps.google.com/maps?q="+37.554264+","+126.913598))
startActivity(intent)
2. 인텐트로 값 전달하기
액티비티가 전환될 때 putxxxExtra() 메서드를 통해 데이터를 intent에 포함하여 전달 가능하다.
/*MainActivity*/
val intent = Intent(context, secondActivity::class.java)
//intent.putExtra("key값","전달 할 data값")
intent.putExtra("name","eunji")
intent.putExtra("phone",""010-0000-0000")
context.startActivity(intent)
값을 전달받을 액티비티에서 getStringExtra(), getIntExtra(), getCharExtra() 등 자료형에 따른 메서드를 사용하여 데이터를 받아온다.
/*secondActivity*/
val intent = getIntent()
//val key =intent.getStringExtra("key값").toString()
val name =intent.getStringExtra("name").toString()
val phone =intent.getStringExtra("phone").toString()
댓글