Activity的数据恢复与保存

默认情况下,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", "这是我保存的数据")
    }

}

你可能感兴趣的:(Activity的数据恢复与保存)