[kotlin] 안드로이드 Application Class

Leechaeyeon·2023년 7월 4일
0

코틀린 안드로이드

목록 보기
9/21

Application Class

  • 안드로이드 애플리케이션에 단 하나를 지정할 수 있는 객체이다.
  • 객체는 같은 안드로이드 애플리케이션이라면 어디서든 주소 값을 가져올 수 있다.
  • 이를 통해 안드로이드의 다양한 구성요소에서 공통적으로 사용하는 데이터를 관리할 수 있다.
  • 메모리에 저장된다.
  • Application Class는 Application을 상속받고 AndoridManifest.xml 에 등록하면 된다.

애플리케이션이 실행 중에만 사용한다 -> 메모리
애플리케이션이 종료되고 다시 실행되었을 때도 사용한다. -> 단말기 내부( 데이터가 유실될 수 있다. )
애플리케이션이 종료되고 다시 실행되었을 때도 사용한다. -> 서버 ( 데이터 유실 걱정은 없다. )
다른 단말기에서도 사용을 해야한다. -> 서버

KotlinClass -> AppClass
KotlinClass -> SecondAcitivty 생성 ( Empty Activity 생성 )

import android.app.Application

class AppClass : Application() {
    var value1 = 0
    var value2 = 0.0 
    lateinit var value3:String 
}
  • Application()을 상속받게 함

manifest > application 안에 android:name으로 설정

정리

ApplicationClass
애플리케이션 당 하나씩 둘 수 있으며 어디서든지 접근이 가능하다.
Application을 상속받은 클래스를 만들고 프로퍼티들을 정의한다.
AndroidManifest.xml에 application 태그의 name속성에 지정하여 사용한다.

MainActivity에 사용방법

val appClass = application as AppClass
appClass.value1 = 100
appClass.value2 = 11.11
appClass.value3 = "문자열1"
// 애플리케이션을 실행하면 자동으로 객체가 생성이 됨 

activity_main.xml

LinearLayout
orientation : vertical

    TextView
    id : textViewMain
    textAppearance : Large
    text : MainActivity

    Button
    id : buttonMain
    text : SecondActivity 실행

activity_second.xml

LinearLayout
orientation : vertical

    TextView
    id : textViewSecond
    textAppearance : Large
    text : SecondActivity

    Button
    id : buttonSecond
    text : 이전으로

MainActivity.kt

package com.test.android67_applicationclass

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.test.android67_applicationclass.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    lateinit var activityMainBinding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)

        // ApplicationClass
        // 애플리케이션 당 하나씩 둘 수 있으며 어디서든지 접근이 가능하다.
        // Application을 상속받은 클래스를 만들고 프로퍼티들을 정의한다.
        // AndroidManifest.xml에 application 태그의 name속성에 지정하여 사용한다.

        activityMainBinding.run{
            buttonMain.setOnClickListener {
                // ApplicatonClass
                // 애플리케이션 당 하나씩 둘 수 있으며 어디서든지 접근이 가능하다.
                // Application을 상속받은 클래스를 만들고 프로퍼티들을 정의한다.
                // AndroidManfest.xml에 application 태그의 name 속성에 지정하여 사용한다.

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

SecondActivity.kt

package com.test.android67_applicationclass

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.test.android67_applicationclass.databinding.ActivitySecondBinding

class SecondActivity : AppCompatActivity() {
    lateinit var activitySecondBinding: ActivitySecondBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activitySecondBinding = ActivitySecondBinding.inflate(layoutInflater)

        activitySecondBinding.run {
            // ApplicationClass 객체를 가져온다.
            val appClass = application as AppClass

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

        setContentView(activitySecondBinding.root)
    }
}

mainClass에서 Appclass의 객체에 담아두고
secondClass에서 Applclass에 저장된 객체를 가져와서 하는것
mainClass에서 secondClass에 있는 값을 받아와서 쓰는 것은 아님

0개의 댓글

관련 채용 정보