Front-End/Kotlin

[Kotlin] 액티비티 생명주기

psy_er 2024. 4. 27. 21:09
728x90

[Kotlin] 액티비티 생명주기

 

< 액티비티 컴포넌트 >

프래그먼트가 액티비티처럼 동작하지만, 액티비티는 아니다.

AndroidManifest.xml를 살펴보고 여러 개의 액티비티를 사용해 보자.

 

인텐트 : 컴포넌트를 실행하려고 시스템에 전달하는 메시지, 어떤 액티비티를 실행할 건지 결정함

안드로이드의 컴포넌트 클래스라면 개발자가 코드에서 직접 생성해서 실행할 수 없습니다.

시스템에서 인텐트의 정보를 분석해서 그에 맞는 컴포넌트를 실행해 줍니다.

외부 앱의 컴포넌트와 연동할 때도 마찬가지입니다.

 

 

< 인텐트 이해하기 >

startActivity() 함수가 인텐트를 시스템에 전달

Intent 생성자의 매개변수는 클래스 타입 래퍼런스 정보를 가진다.

액티비티를 추가하면 manifest에 액티비티가 자동으로 등록된다.

 

- MainActivity와 DetailActivity 등록

<activity
   android:name=".DetailActivity"
   android:exported="true"/>
<activity
   android:name=".MainActivity"
   android:exported="true">
   <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.LAUNCHER"/>
   </intent-filter>
</activity>

 

- 인텐트를 시스템에 전달

val intent: Intent = Intent(this, DetailActivity::class.java)
startActivity(intent)

 

< 액티비티 추가하기 >

모듈에 new/Activity/Empty Views Activity 추가하기

 

액티비티를 추가하면 AndroidManifest에도 액티비티가 자동으로 추가된다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.EventApplication">
        <activity
            android:name=".AddActivity"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <!-- 인텐트 필터가 activity 실행 순서를 알려줌 -->
            <!-- 이 액티비티가 처음으로 실행된다는 것을 알려주는 코드이다 -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

728x90