// education

13. 액티비티 컴포넌트 - Activity 생명주기(Lifecycle), Intent 및 Activity Result API

안드로이드 4대 핵심 컴포넌트 중 첫 번째인 **액티비티(Activity)**의 6대 **생명주기(Lifecycle)**와 화면 간 데이터 이동 통로인 **인텐트(Intent)**를 심도 있게 학습합니다.


1. 액티비티 생명주기 6대 핵심 콜백


2. Activity Result API 최신 구현 코드

class MainActivity : AppCompatActivity() {

    private val launcher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { result ->
        if (result.resultCode == RESULT_OK) {
            val returnVal = result.data?.getStringExtra("REPLY")
            Log.d("ActivityResult", "받은 응답: " + returnVal)
        }
    }

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

        val btnMove = findViewById<Button>(R.id.btnMove)
        btnMove.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            launcher.launch(intent)
        }
    }
}

5. 안드로이드 & 코틀린 실무 심화 개발 가이드 및 엔터프라이즈 최적화 (Deep Dive)

13. 액티비티 컴포넌트 - Activity 생명주기(Lifecycle), Intent 및 Activity Result API 레슨에서 다룬 핵심 이론 및 구현 패턴은 대규모 상용 모바일 앱 제작 시 앱의 안정성과 응답 속도(Performance), 메모리 사용량을 결정하는 주요 엔지니어링 팩터입니다.

1) 아키텍처 및 메모리 관리 지침 (Architecture & Memory Rules)

2) 앱 보안 및 구글 플레이 스토어 배포 지침 (Security & Publishing)

  1. 동적 런타임 권한(Runtime Permissions) 관리: 위치 정보, 카메라, 마이크 권한 요청 시 앱 시작 즉시 허용을 요구하는 방식 대신, 해당 기능이 실행되는 접점에서 사유 설명 다이얼로그와 함께 동적 요청을 시행합니다.
  2. 코드 난독화 및 최적화(R8 / ProGuard): build.gradle.ktsisMinifyEnabled = true 설정을 통해 사용하지 않는 코드를 제거(Tree-shaking)하고 소스 코드를 난독화하여 역공학(Reverse Engineering) 피해를 차단합니다.
  3. API Key 및 서명 키 분리 보안: 비밀 API Key, Firebase 키는 프로젝트의 local.properties 파일에 은닉 보관하고, BuildConfig를 통해 수신함으로써 공개 버전 관리(Git)에 누출되지 않도록 엄격히 방어합니다.

6. 핵심 요약 및 실무 FAQ (Summary & Q&A)

Q1. 본 챕터의 기능을 실제 프로젝트에 구동할 때 가장 자주 발생하는 대표적 오류는 무엇인가요?

Q2. 신규 앱 프로젝트 구축 시 기존 구버전 사양 대신 최신 Jetpack 라이브러리를 도입하는 이점은 무엇인가요?

← 이전12. 머티리얼 라이브러리 - Material Design 3, Toolbar, DrawerLayout, BottomNavigationView 다음 →14. 브로드캐스트리시버 컴포넌트 - 동적/정적 리시버 등록 및 시스템 브로드캐스트 이벤트