Archives
Recent Posts
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[43일차 Android] Application Class 본문

Computer/Android

[43일차 Android] Application Class

Wise-99 2023. 7. 6. 20:00

 

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Application Class

  • 안드로이드 애플리케이션에 단 하나를 지정할 수 있는 객체
  • 이 객체는 같은 안드로이드 애플리케이션이라면 어디서든 접근할 수 있다.
  • 이를 통해 안드로이드의 다양한 구성요소에서 공통적으로 사용하는 데이터를 관리할 수 있다.
  • Application을 상속받는 클래스를 만들고 프로퍼티를 정의한다.
  • AndroidManfest.xml에 application 태그의 name 속성에 지정하여 사용한다.

 

 

 

예제 코드

AndroidManfest.xml

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

    <application
        android:name=".AppClass"
        
        ...
    </application>
</manifest>

 

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textViewMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <Button
        android:id="@+id/buttonMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SecondActivity 실행" />
</LinearLayout>

 

 

 

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".SecondActivity">

    <TextView
        android:id="@+id/textViewSecond"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SecondActivity"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <Button
        android:id="@+id/buttonSecond"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="이전으로" />
</LinearLayout>

 

 

 

AppClass.kt

import android.app.Application

class AppClass : Application(){

    var value1 = 0
    var value2 = 0.0
    lateinit var value3:String
}

 

 

 

MainActivity.kt

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)

        activityMainBinding.run {
            buttonMain.setOnClickListener {

                val appClass = application as AppClass
                appClass.value1 = 100
                appClass.value2 = 11.11
                appClass.value3 = "문자열1"

                val secondIntent = Intent(this@MainActivity, SecondActivity::class.java)
                startActivity(secondIntent)
            }
        }

        setContentView(activityMainBinding.root)
    }
}
  • AppClass형의 appClass를 선언하여 프로퍼티의 값을 정의한다.
  • 이후 SecondActivity를 실행한다.

 

 

 

SecondActivity.kt

class SecondActivity : AppCompatActivity() {

    lateinit var activitySecondBinding: ActivitySecondBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activitySecondBinding = ActivitySecondBinding.inflate(layoutInflater)

        activitySecondBinding.run {
            val appClass = application as AppClass

            textViewSecond.text = "${appClass.value1}\n"
            textViewSecond.append("${appClass.value2}\n")
            textViewSecond.append("${appClass.value3}")
        }

        setContentView(activitySecondBinding.root)
    }
}
  • AppClass형의 appClass의 프로퍼티 값을 사용하여 textView에 보여준다.

 

 

 

결과