notes
Android - 기본 개념
Android 앱 구성·컴포넌트·생명주기 등 기본 개념 정리.
ActivityUI 인터페이스를 담당 사용자와 직접 상호작용 생명주기가 있음 (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/ # 기타 리소스
이러한 구조들이 모여서 하나의 완성된 안드로이드 앱을 구성