Activity의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 application 로직을 실행한다.
ViewModel
과 연결Acitivity가 사용자에게 표시된다. 앱이 Activity를 Foreground로 보내 상호작용할 수 있도록 준비해준다.
앱이 사용자와 상호작용한다. 어떤 이벤트가 발생해 앱에서 포커스가 떠날 때까지 앱이 머무를 수 있다.
Activity가 일시중지되어 있는 상태일 때, 계속 실행되면 안되지만 잠시 후 다시 시작할 작업을 일시중지하거나 조정한다.
시스템에 Activity의 실행이 완료되어 종료될 시점에 사용한다.
Activity가 다시 시작될 때 사용한다.
Activity가 소멸된다.
finish()
가 호출될 때Fragment가 Activity에 붙을 때 호출된다. Fragment가 완벽하게 생성되진 않는다.
Fragment가 처음 생성될 때 호출되며, 리소스를 초기화할 수 있다.
Layout을 Inflate하는 곳, Fragment가 자신의 Interface를 그리기 위해 호출한다.
onCreateView()
에서 반환된 View객체는 onViewCreated()
파라미터로 전달된다.
Fragment가 사용자에게 보여질 수 있을 때 호출된다.
FragementTransaction
Fragment가 보이는 상태에서 모든 Animator와 Transition 효과가 종료되고, Fragment가 사용자와 상호작용 할 수 있을 때 호출된다.
UI 관련 처리 장치와 중요한 데이터를 저장한다.
Fragment가 가려져서 화면에 보이지 않는 경우 호출된다.
Activity에서 Fragment 생성 시 addToBackStack()을 요청했을 경우, onDestroy()를 호출하지 않고, 인스턴스가 저장되어 있다가 Fragment를 다시 부를 때 onCreateView()를 실행해 다시 화면에 보이게 한다.
view가 제거된 후 Fragment가 완전히 소멸되기 전에 호출된다.
메모 화면, 메모 확인 화면
sendBinding = ActivitySendMessageBinding.inflate(layoutInflater)
builder = AlertDialog.Builder(this)
messageContent = sendBinding.messageInput.text.toString()
sendBinding.sentMessage.setOnClickListener {
messageContent = sendBinding.messageInput.text.toString()
val receivedMessageIntent = Intent(this, ReceivedMessageActivity::class.java)
receivedMessageIntent.putExtra("message", messageContent)
startActivity(receivedMessageIntent)
}
builder.setTitle("알림창")
builder.setMessage("다시 작성하시겠습니까?")
var listener = object : DialogInterface.OnClickListener {
override fun onClick(dialog: DialogInterface?, index: Int) {
when (index) {
// Dilog에서 아니오 버튼 클릭 시, EditText 초기화
DialogInterface.BUTTON_NEGATIVE -> {
messageContent = " "
sendBinding.messageInput.setText(messageContent)
}
}
}
}
builder.setPositiveButton("예", listener)
builder.setNegativeButton("아니오", listener)
onPause
현재까지 작성한 내용 Activity의 전역변수에 담아두기 override fun onPause() {
super.onPause()
messageContent = sendBinding.messageInput.text.toString()
}
onResume
onPause에서 저장한 전역변수 내용으로 EditText 내용으로 설정하기 override fun onResume() {
super.onResume()
if (messageContent != " ") {
sendBinding.messageInput.setText(messageContent)
}
}
onRestart
Dialog를 활용하여 다시 작성할거냐고 묻는 창 띄우기, 다시 작성하지 않겠다고 하면 onPause에서 저장했던 변수 비우기 override fun onRestart() {
super.onRestart()
builder.show()
}
package com.example.intentpractice
import android.content.DialogInterface
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import com.example.intentpractice.databinding.ActivitySendMessageBinding
class SendMessageActivity : AppCompatActivity() {
// 전연 변수 선언
lateinit var sendBinding : ActivitySendMessageBinding
lateinit var builder : AlertDialog.Builder
lateinit var messageContent : String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewBinding 사용
sendBinding = ActivitySendMessageBinding.inflate(layoutInflater)
setContentView(sendBinding.root)
// Dialog Builder 생성
builder = AlertDialog.Builder(this)
// EditText 내용을 저장하는 messageContent 선언
messageContent = sendBinding.messageInput.text.toString()
// 확인 버튼 클릭 시, 다음 화면으로 이동
sendBinding.sentMessage.setOnClickListener {
messageContent = sendBinding.messageInput.text.toString()
val receivedMessageIntent = Intent(this, ReceivedMessageActivity::class.java)
receivedMessageIntent.putExtra("message", messageContent)
startActivity(receivedMessageIntent)
}
// Dialog 생성
builder.setTitle("알림창")
builder.setMessage("다시 작성하시겠습니까?")
var listener = object : DialogInterface.OnClickListener {
override fun onClick(dialog: DialogInterface?, index: Int) {
when (index) {
// Dilog에서 아니오 버튼 클릭 시, EditText 초기화
DialogInterface.BUTTON_NEGATIVE -> {
messageContent = " "
sendBinding.messageInput.setText(messageContent)
}
}
}
}
builder.setPositiveButton("예", listener)
builder.setNegativeButton("아니오", listener)
}
override fun onPause() {
super.onPause()
messageContent = sendBinding.messageInput.text.toString()
}
override fun onResume() {
super.onResume()
if (messageContent != " ") {
sendBinding.messageInput.setText(messageContent)
}
}
// 화면이 재시작 됐을 때, Dialog 띄우기
override fun onRestart() {
super.onRestart()
builder.show()
}
}