티스토리 뷰
PrivacyParcelable.kt
package com.jwsoft.kotlinproject
import android.os.Parcel
import android.os.Parcelable
data class PrivacyParcelable (
var height: Int,
var weight: Int
) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(height)
parcel.writeInt(weight)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<PrivacyParcelable> {
override fun createFromParcel(parcel: Parcel): PrivacyParcelable {
return PrivacyParcelable(parcel)
}
override fun newArray(size: Int): Array<PrivacyParcelable?> {
return arrayOfNulls(size)
}
}
}
PrivacySerializable.kt
package com.jwsoft.kotlinproject
import java.io.Serializable
class PrivacySerializable (
var height: Int,
var weight: Int
) : Serializable
MainActivity.kt
package com.jwsoft.kotlinproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.e("", "onCreate()")
if (savedInstanceState != null) {
Log.e("", savedInstanceState.getString("name").toString())
Log.e("", savedInstanceState.getInt("age").toString())
var privacyParcelable = savedInstanceState.getParcelable<PrivacyParcelable>("privacyParcelable")
if (privacyParcelable != null) {
Log.e("", privacyParcelable.height.toString() + " " + privacyParcelable.weight.toString())
}
var privacySerializable = savedInstanceState.getSerializable("privacySerializable") as PrivacySerializable
if (privacySerializable != null) {
Log.e("", privacySerializable.height.toString() + " " + privacySerializable.weight.toString())
}
}
}
override fun onStart() {
super.onStart()
Log.e("", "onStart()")
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
Log.e("", "onRestoreInstanceState()")
}
override fun onResume() {
super.onResume()
Log.e("", "onResume()")
}
override fun onPause() {
super.onPause()
Log.e("", "onPause()")
}
override fun onStop() {
super.onStop()
Log.e("", "onStop()")
}
override fun onSaveInstanceState(outState: Bundle) {
Log.e("", "onSaveInstanceState()")
outState.putString("name", "James Kim")
outState.putInt("age", 30)
outState.putSerializable("privacySerializable", PrivacySerializable(180, 80))
outState.putParcelable("privacyParcelable", PrivacyParcelable(180, 80))
super.onSaveInstanceState(outState)
}
override fun onDestroy() {
super.onDestroy()
Log.e("", "onDestroy()")
}
}
onSaveInstanceState() 함수가 onStop() 함수 이후에 호출됐는데 해당 프로젝트의 타겟 버전이 29이기 때문이다.
29버전 이전으로 사용하게 되면 onStop() 함수가 호출되기 이전에 onSaveInstanceState() 함수가 호출되는데
onPause() 함수 이전에 호출될지 이후에 호출될지는 보장할 수 없다.
참고.
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] Activity에서 Fragment로 데이터 전달 (0) | 2020.10.24 |
---|---|
[Kotlin] Activity 간의 데이터 전달 (0) | 2020.10.24 |
[Kotlin] ViewPager2에서 본 Activity와 Fragment의 생명주기 (0) | 2020.10.06 |
[Kotlin] Activity와 Fragment 간의 ViewModel 공유 (0) | 2020.10.05 |
[Kotlin] Tic-tac-toe 게임으로 보는 MVVM 패턴 (0) | 2020.09.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ViewPager2
- CoordinatorLayout
- Intent
- Vue.js #Vue.js + javascript
- 안드로이드 #코틀린 #Android #Kotlin
- 안드로이드
- handler
- ViewModel
- ArrayList
- JSONArray
- View
- Architecture Pattern
- Kotlin
- fragment
- 코틀린
- James Kim
- java
- TabLayout
- 자바
- JSONObject
- recyclerview
- activity
- XML
- Android
- 혀가 길지 않은 개발자
- Livedata
- Design Pattern
- DataBinding
- MVVM
- coroutine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함