[Android/안드로이드] 액티비티(Activity)

Jongmin Shin·2022년 6월 16일
0

안드로이드

목록 보기
1/1
post-thumbnail

액티비티는 사용자가 직접 보고 입력하는 화면을 담당하는 컴포넌트입니다.
컴포넌트를 구성하고 있는 핵심요소인 컨텍스트에 대한 이해해보는 시간을 가져볼께요.

먼저 메인 액티비티에서 서브 액티비티를 실행하는 예제코드를 살펴보고 개념을 살펴보면 좀 더 도움이 됩니다.

[소스 코드1]

class MainActivity: AppCompatActivity() {
	val binding by lazy { ActivityMainBinding.inflate(layoutInflater)}
    
    override fun onCreate(savedInstanceState: Bundle?) {
    	super.onCreate(savedInstanceState)
        setContentView(binding.root)
        
        val intent = Intent(this, SubActivity::class.java)
        intent.putExtra("from1", "Hello Bundle")
        intent.putExtra("from2", 2021)
        
        binding.btnStart.setOnClickListener { startActivity(intent) }
    }
}

1. 컨텍스트란?

컨텍스트는 시스템을 사용하기 위한 정보(프로퍼티)와 도구(메서드)가 담겨있는 클래스입니다. 대부분 컨텍스트는 컴포넌트 실행시 함께 생성되고, 생성된 컴포넌트가 가지고 있는 메서드를 호출해서 각각의 도구를 사용합니다.

Activity: Context()

2. 컨텍스트의 종류

1.애플리케이션 컨텍스트: 앱을 통틀어서 하나의 인스턴스만 생성. applicationContext를 직접 호출해서 호출 지점과 상관없이 사용 가능. 모두 동일한 컨텍스트 호출됩니다.

2.베이스 컨텍스트: 안드로이드 4대 메이저 컴포넌트인 액티비티, 서비스, 컨텐트 프로바이더, 브로드캐스트 리시버의 기반 클래스. 각각 컴포넌트에서 baseContext 또는 this로 컨텍스트를 사용할 수 있음. 컴포넌트 개수만큼 생성되기에 호출 지점에 따라 서로 다른 컨텍스트가 호출됩니다.

3. 인텐트

액티비티 실행을 위해선 단순히 컨텍스트가 제공하는 메서드를 호출하면 되는데, 이때 실행할 액티비티가 명시된 인텐트를 해당 메서드에 전달해야 합니다.
인텐트는 직역하면 "의도"라고 해석할 수 있는데, 개발자가 어떤 의도를 가지고 메서드를 실행할 것인지를 담아 전달하는 것 입니다.
인덴트에 담아서 안드로이드에 전달하면 안드로이드는 해당 인텐트를 해석하고 실행합니다.

다음은 새로 생성된 액티비티를 실행하기 위해 인텐트가 전달되는 과정입니다. (소스 코드1 참조)

1.실행할 대상의 액티비티 이름과 전달할 데이터를 담아서 인텐트를 생성.
2.생성한 인텐트를 startActivity() 메서드에 담아 호출 -> 액티비티 매니저에게 전달.
3.액티비티 매니저는 인텐트를 분석하여 지정한 액티비티 실행.
4.전달된 인텐트는 최종 목적지인 타겟 액티비티까지 전달.
5.타겟 액티비티에서는 전달받은 인텐트에 데이터가 있다면 이를 꺼내서 사용함.

0개의 댓글