본문 바로가기
IT/안드로이드 Android

안드로이드 앱 실행되는 원리 정리

by SidePower 2022. 10. 11.

 

무작성 앱 만들기 보다는 간단하게라도

내가 코딩한 소스들이 참조되어 실행되는 과정을 알고 있다면 

앞으로 더 복잡한 걸 배울때도 쉽게 이해 할수 있을거 같아서 정리해봤습니다.

 

제일 먼저 안드로이드 OS는 AndroidManifest.xml을 분석합니다.

 

화면 로딩을 위해 <activity>을 찾습니다.

<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>

activity는 화면을 표현하는 단위이며

<activity> ~ </activity> 쌍으로 activity가 한개 있으면 화면이 한개이고

activity가 2개이면 화면이 2개 또 10개면 화면이 10개가 되는것입니다.

 

특히 <intent-filer>안에

<action android:name이 MAIN것을 첫 화면으로 인식합니다.

<action android:name="android.intent.action.MAIN" />

 

두번째로 <activity android:name=".MainActivity"에 의해

MainActivity 라는 Class를 찾습니다.

MainActivity를 찾고 그 다음에 onCreate 함수를 실행하게 됩니다.

 

MainActivity.kt 파일 내용입니다.

package kr.dd0133.helloworld

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)
    }
}

onCreate 함수 안을 보면

super.onCreate(savedInstanceState)는 super라고 상위 Class를 실행하네요.

setContentView(R.layout.activity_main)로 인해 화면을 오픈합니다.

R.layout.activity_main이란 R은 res 폴더를 의미하며

res폴더안에 layout 폴더에 activity_main.xml 파일을 말합니다.

 

 

activity_main.xml은 화면을 구성하는 위젯들을 배치하는 파일이며

TextView에 Hello World!라는 문자열을 표시하게 됩니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

 안드로이드의 네가지 구성 요소가 있습니다.

Activity  화면을 관리하는 실행 단위
Service  백그라운드 실행 단위
Broadcast Receiver 안드로이드 OS의 실행 단위
Content Provider 다른 앱이나 외부에 데이타를 제공하는 실행 단위

 

 

감사합니다.

반응형

댓글