Development/Kotlin&Android
액티비티와 인텐트
우봉수
2023. 4. 13. 17:48
액티비티
- 앱의 구성 요소, 사용자와 상호작용할 수 있는 화면(UI)
- 앱은 2개이상의 액티비티를 포함한다.
- AppCompatActivity를 상속하여 만듬
- 사용법: Acitvity Mainfest 파일 생성 → 액티비티 등록
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application… 생략 … >
<activity android:name=".MainActivity“ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
**setContentView(R.layout.activity_main)**
}
}
액티비티 라이프 사이클
- onCreate(): 액티비티 생성
- onStart(): 화면에 표시시 호출 액티비티가 사용자에게 보여지기 시작 함
- onResume(): 사용자 명령을 받고 실행시 호출 사용자와 상호작용이 가능해
- 액티비티 활성화
- onPause(): 액티비티 화면의 일부가 가리게 된다면 호출
- onStop(): 액티비티 화면 전부가 가려지게 된다면 호출
- onDestroy(): 완전히 메모리가 사라진다면 호출
인텐트
- 일종의 메시지 객체
- 다른 앱 구성 요소에 작업을 요청할때 사용
- 예시: startActivity(Intent) 메소드를 사용할때 사용
인텐트 유형
- 명시적 인텐트: 대상 지정(필요한 Action 지정)
- 암시적 인텐트: 대상 미지정, 일반적인 작업
- 인텐트 필터: 받으려는 데이터에 대한 스키마
<activity android:name=".SecondActivity" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>
MVVM 패턴
- Model-View-ViewModel
- 뷰와 모델을 분리하는 대표적인 소프트웨어 아키텍처 패턴
- 안드로이드 Jetpack의 ViewModel클래스를 사용하여 구현 가능