Activity는 앱의 구성요소로, 사용자와 상호작용할 수 있는 화면을 제공한다.
액티비티는 Activity, AppCompatActivity를 상속하여 만든다.
-AppCompatActivity는 Jetpack라이브러리에 포함된 것으로 오래된 안드로이드 버전에서도 사용이 가능하다.
-mainActivity는 AppCompatActivity를 상속받는다!!
package com.example.study_activityintent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
참고 : 안드로이드 앱 구성요소 -> 액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더
익숙한 이 그림!

예를들어, MainActivity에서 SecondActivity가 실행된다면
MainActivity onPause()
SecondActivity onCreate(), onStart(), onResume()
MainActivity onStop()이 실행된다.
이건 콘솔에 찍어보면 알 수 있다.
Intent는 일종의 메시지 객체이다. 다른 앱 구성요소에 Intent를 보내 작업을 요청한다. 예시로는, 액티비티를 시작할때, 서비스를 시작할때, 브로드캐스트를 전달할 때 사용한다.
val implicitIntent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:114"))
startActivity(implicitIntent)
예시로 이해를 해봅시다..
SecondActivity가 있다. 이 액티비티는 Dial(전화걸기)Action을 수행할 수 있다. 그러면 SecondActivity가 다른 Activity로 부터 DialAction을 수신 할 수 있다고 명시해줘야 한다. MainActivity에서 DialAction을 암시적 인텐트로 부르면, SecondActivity가 열린다. 그 명시하는것이 인텐트 필터이다.
음.. 만약에 사용자가 메시지를 공유하려고 공유하기 버튼을 누른 상황이다. 그럴때 카톡, dm, 라인 이렇게 3가지의 선택지가 있다. 그러면 사용자에게 어떤 앱을 사용해서 공유할지 선택하도록 해야겠지? 그걸 구현하려 할때 쓰는게 intent-filter같다.
인텐트 필터를 사용하려면, AndroidManifest.xml에 다음과 같이 추가하면 된다.
<activity
android:name=".SecondActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
<intent-filter>
<action android:name="android.intent.action.DIAL"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="tel"/>
</intent-filter>
</activity>
복습하면서 적은거라 틀릴 수 있습니다..
지금은 각 토픽들에 대해 뭔지만 정리하고, 다음번에 더 자세히 포스팅해 보도록 하겠어요.