Activity的数据恢复与保存
2020-05-26 本文已影响0人
撸码小狂魔
默认情况下,Acticity 会自动保存数据,但在横竖屏切换的时候,或者内存不足被系统干掉的时候,需要手动的保存与回复一些必要的数据。
package com.psj.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val tag : String by lazy {
MainActivity::class.java.simpleName
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.i(tag,"onCreate")
setContentView(R.layout.activity_main)
Log.i(tag,"savedInstanceState == null ? " + (savedInstanceState == null))
savedInstanceState?.getString("data")?.let {
Log.i(tag,"保存的数据为: " + it)
Toast.makeText(MainActivity@this,it,Toast.LENGTH_SHORT).show()
}
}
override fun onStop() {
super.onStop()
Log.i(tag,"onStop")
}
override fun onPause() {
super.onPause()
Log.i(tag,"onPause")
}
// 在Activity的 onStop 方法被调用之前肯定会被调用
// 如果用户自己手动按返回按键导致销毁Acticity,那么保存的数据无效
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
Log.i(tag,"onSaveInstanceState")
//将数据保存在 outState 对象了里面
outState.putString("data", "这是我保存的数据")
}
}