← 글 목록

notes

Android - 기본 개념

Android 앱 구성·컴포넌트·생명주기 등 기본 개념 정리.

Activity
  • UI 인터페이스를 담당
  • 사용자와 직접 상호작용
  • 생명주기가 있음 (onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy)
  • 화면에 보이는 컴포넌트
  • class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }
    
        // 액티비티 생명주기
        override fun onStart() { super.onStart() }
        override fun onResume() { super.onResume() }
        override fun onPause() { super.onPause() }
        override fun onStop() { super.onStop() }
        override fun onDestroy() { super.onDestroy() }
    }


    Service
  • 백그라운드에서 실행
  • UI가 없음
  • 장시간 실행되는 작업 처리
  • 앱이 종료되어도 실행 가능
  • class MyService : Service() {
        override fun onBind(intent: Intent): IBinder? = null
    
        // 백그라운드 작업
        override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
            // 장시간 실행되는 작업
            return START_STICKY
        }
    }
    
    // 서비스 시작
    val serviceIntent = Intent(this, MyService::class.java)
    startService(serviceIntent)


    Receiver (브로드캐스트 리시버)
  • 시스템이나 앱의 이벤트를 수신하는 컴포넌트
  • 배터리 상태, 네트워크 변경, SMS 수신 등 감지
  • AndroidManifest.xml에 등록 필요
  • class MyReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            // 시스템 이벤트나 앱 이벤트 수신 처리
            when (intent.action) {
                Intent.ACTION_BOOT_COMPLETED -> // 부팅 완료
                Intent.ACTION_BATTERY_LOW -> // 배터리 부족
                "CUSTOM_ACTION" -> // 커스텀 이벤트
            }
        }
    }


    Manifest (매니페스트)
  • 앱의 설정 정보를 담는 XML 파일
  • 권한 설정, 컴포넌트 등록 (permission , UI Activity )
  • 최소 SDK 버전 지정 ( 버전 명시 )
  • <manifest>
        <application>
            <activity android:name=".MainActivity"/>
            <service android:name=".MyService"/>
            <receiver android:name=".MyReceiver"/>
            <uses-permission android:name="android.permission.INTERNET"/>
        </application>
    </manifest>


    Task
  • 백그라운드 작업 처리를 위한 구조
  • 서버통신 및 로직 처리
  • 현대에는 코루틴으로 대체되는 추세
  • class MyAsyncTask : AsyncTask<Void, Int, String>() {
        override fun doInBackground(vararg params: Void): String {
            // 백그라운드 작업
            return "결과"
        }
    
        override fun onPostExecute(result: String) {
            // UI 업데이트
        }
    }


    Util
  • 공통으로 사용되는 유틸리티 함수들
  • 정적 메소드들의 모음

  • res (리소스 파일 폴더 )
  • 앱에서 사용하는 모든 리소스 파일
  • 다양한 화면 크기/언어 지원
  • res/
      ├─ layout/      # XML 레이아웃 파일
      ├─ drawable/    # 이미지 리소스
      ├─ values/      # 문자열, 색상, 스타일
      ├─ mipmap/      # 앱 아이콘
      └─ raw/         # 기타 리소스



    이러한 구조들이 모여서 하나의 완성된 안드로이드 앱을 구성