Deperecated/Android_강의

안드로이드 - 안드로이드 4대 구성 요소 - Activity 실행하기

누알라리 2020. 2. 18. 00:47
1. 안드로이드 4대 구성요소

- 하나의 애플리케이션은 독립된 실행단위인 4대 구성 요소로 구성된다.

 

1. Activity

- 눈에 보이는 화면(UI요소)을 관리하는 실행단위

- 여러개의 화면이 떠있는 App의 경우 여러개의 Activity가 있는 것이다.

 

2. Service

- 백그라운드에서 실행되는 실행단위

 

3. BroadCastReceiver

- OS가 전달하는 메세지(Ex. 배터리 닳음, 메세지 도착 등)를 전달 받아 실행되는 실행단위

 

4. ContentsProvider

- 저장된 데이터를 제공하기위한 실행단위

 

2. AndroidManifest.xml

- 안드로이드 4대 구성요소는 AndroidManifest.xml에 전부 기록되어야 한다.

- AndroidManifest.xml은 개발자가 안드로이드OS에게 알려주고싶은것들을 기록하는 곳이다.

 

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

    <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/AppTheme">
        <activity android:name=".MainActivity">
         	// 액티비티를 대표하는 이름을 설정할 때 쓰는 필터.
            // 안드로이드OS는 APP을 실행시키고 android.intent.action.MAIN이름이 붙은 ACTIVITY를 실행시킨다.
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity"></activity>
    </application>

</manifest>

 

3. Intent

- 안드로이드의 4대 구성 요소를 실행하기 위해서는 Intent라는 객체가 필요하다.

- 안드로이드의 4대 구성 요소를 실행하기 위해서는 개발자가 직접 실행하는 것이 아니라 OS에게 실행을 요청하게 된다,

- 실행 요청을 전달 받은 OS는 해당 실행 요소를 실행하게 되는데, 이 때 실행 요청을 위한 정보를 담는 객체가 Intent이다.

 

- 따라서 Intent를 이용해서 원하는 안드로이드 4대 구성요소를 실행시킬 수 있다.

 

4. Activity 실행 및 종료

1. StartActivity(Intent)

- 지정된 Intent에 담긴 정보를 토대로 Activity를 실행한다.

 

2. finish()

- 현재 실행되어 있는 Activity를 종료한다.

 

5. Back Stack

- Activity에서 다른 Activity를 실행하면 이전 Activity는 Back Stack에 담겨 정지 상태가 되고 새로 실행된 Activity가 활동하게 된다.

- 새로 실행된 Activity가 제거 되면 Back Stack에 있던 Activity가 다시 활동하게 된다.

 

6. Activity 생성

- app -> New -> Activity 생성 

 

7. 예제
main activity

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 1. 버튼을 눌러서 두번째 액티비티를 실행시킨다.
        button2.setOnClickListener { view ->

            // 2. 인텐트 객체 생성
            var intent = Intent(this, SecondActivity::class.java)

            // 3. 이 Intent를 실행시켜줘! 안드로이드os야!
            startActivity(intent)
        }
    }
second activity

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        // 4.
        // 버튼을 누르면 현재 실행중인 Activity를 종료 시킨다.
        // 만일 Back Stack에 이전 Activity가 남아있으면 지금건 종료되고 이전것이 실행된다.
        // 따라서 main -> second -> finsh순으로 왔으니 이 버튼을 누르면 Back stack에 남아있는 main으로 갈 것이다.
        // 하지만 main에서 버튼을 하나 추가해서 finish를 하면 Back Stack에 아무것도 없기 때문에 app이 바로 종료될것이다.
        // 하지만 main에서 버튼을 하나 추가해서 finish를 하면 Back Stack에 아무것도 없기 때문에 app이 바로 종료될것이다.
        button.setOnClickListener { view ->
            finish()
        }
    }