티스토리 뷰

728x90
반응형
SMALL

컨텍스트(Context)와 앱의 상태는 안드로이드 앱 개발에서 핵심적인 개념 중 하나입니다. 이 글에서는 컨텍스트의 역할과 중요성, 그리고 안드로이드 앱의 생명 주기에 대해 자세하게 알아보겠습니다.

8.1 컨텍스트(Context)의 역할과 중요성

8.1.1 컨텍스트의 정의

컨텍스트는 안드로이드 앱에서 현재 실행 중인 상황과 관련된 정보를 제공하는 객체입니다. 이는 앱 자체의 정보, 리소스, 클래스들에 대한 접근 권한을 포함합니다.

8.1.2 컨텍스트의 역할

  • 액티비티 및 서비스 시작: 앱 내에서 액티비티를 시작하거나 서비스를 시작하는 데 사용됩니다.
  • 리소스 액세스: 앱의 리소스(레이아웃, 문자열, 이미지 등)에 접근할 때 사용됩니다.
  • 앱의 정보 얻기: 앱의 패키지 이름, 버전 등의 정보에 접근할 수 있습니다.

8.1.3 컨텍스트의 종류

안드로이드에서는 여러 종류의 컨텍스트가 있으며, 각각의 역할과 사용 시기에 따라 다르게 사용됩니다.

  • 애플리케이션 컨텍스트(Application Context): 앱의 전역적인 정보에 접근할 때 사용합니다.
  • 액티비티 컨텍스트(Activity Context): 액티비티 내에서 사용되며, 액티비티가 소멸되면 함께 소멸합니다.

8.2 안드로이드 앱의 생명 주기(Lifecycle) 소개

8.2.1 생명 주기의 개념

안드로이드 앱은 다양한 상태를 거쳐가며 동작합니다. 이러한 상태들은 생명 주기로 표현되며, 앱의 상태 변화에 따라 특정 이벤트들이 발생합니다.

8.2.2 생명 주기의 주요 단계

  • onCreate(): 액티비티가 처음 생성될 때 호출됩니다.
  • onStart(): 액티비티가 사용자에게 표시되기 바로 전에 호출됩니다.
  • onResume(): 액티비티가 포그라운드로 이동되어 사용자와 상호 작용 가능할 때 호출됩니다.
  • onPause(): 다른 액티비티가 포그라운드로 나타나면서 현재 액티비티가 일부 가려질 때 호출됩니다.
  • onStop(): 액티비티가 사용자에게 더 이상 표시되지 않을 때 호출됩니다.
  • onDestroy(): 액티비티가 소멸될 때 호출됩니다.

8.2.3 생명 주기 콜백 메서드 사용 예시

class MainActivity : AppCompatActivity() {

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

        // onCreate()에서의 초기화 작업 수행
    }

    override fun onStart() {
        super.onStart()
        // onStart()에서의 작업 수행
    }

    override fun onResume() {
        super.onResume()
        // onResume()에서의 작업 수행
    }

    override fun onPause() {
        super.onPause()
        // onPause()에서의 작업 수행
    }

    override fun onStop() {
        super.onStop()
        // onStop()에서의 작업 수행
    }

    override fun onDestroy() {
        super.onDestroy()
        // onDestroy()에서의 작업 수행
    }
}

8.3 컨텍스트와 생명 주기의 상호 작용

8.3.1 생명 주기 메서드 내에서 컨텍스트 사용

class MyService : Service() {

    override fun onCreate() {
        super.onCreate()
        // 서비스가 생성될 때 애플리케이션 컨텍스트 사용 예시
        val appContext: Context = applicationContext
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // 서비스가 시작될 때 액티비티 컨텍스트 사용 예시
        val activityContext: Context = this
        return START_STICKY
    }

    // 생략...
}

8.4 전체 예시

class MainActivity : AppCompatActivity() {

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

        val appContext: Context = applicationContext
        // onCreate()에서의 초기화 작업 수행
    }

    override fun onStart() {
        super.onStart()
        val activityContext: Context = this
        // onStart()에서의 작업 수행
    }

    override fun onResume() {
        super.onResume()
        // onResume()에서의 작업 수행
    }

    override fun onPause() {
        super.onPause()
        // onPause()에서의 작업 수행
    }

    override fun onStop() {
        super.onStop()
        // onStop()에서의 작업 수행
    }

    override fun onDestroy() {
        super.onDestroy()
        // onDestroy()에서의 작업 수행
    }
}

이 글에서 다뤘던 내용은 안드로이드 앱 개발에서 핵심적인 부분이며, 컨텍스트와 생명 주기의 이해는 안정적이고 효율적인 앱을 만드는 데에 중요한 역할을 합니다.

728x90
반응형
LIST
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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 29
30
글 보관함