首页 > 解决方案 > 按下返回键时如何防止数据丢失

问题描述

MainActivity代码

class MainActivity : AppCompatActivity() {
var number=0

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    if(savedInstanceState!=null){
     number=savedInstanceState.getInt("Number",number)
    }

    findViewById<Button>(R.id.button).setOnClickListener{
        number +=5
        findViewById<TextView>(R.id.textView).text="$number"

    }





}

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putInt("Number",number)
    Log.i("MainActivity","Saved Instance Called")
}

}

请参阅当我运行应用程序并按下返回按钮时,数字的数据未恢复,但是当我按下主页按钮时数据已恢复。

标签: androidkotlinandroid-savedstate

解决方案


如果您按下主页按钮,您的应用程序将被置于后台并Activity保持活动状态(但暂停)。在任何时间点,系统都可以销毁它以释放内存,并且只保留由onSaveInstanceState. onCreatesavedInstanceState你回到你的应用程序时,这个包然后被传递给。

但是,当您按下后退按钮时,您的活动已完成并且应用程序已关闭。在这种情况下不会生成保存状态,因此如果您想保留您的number值,您必须将其存储在持久存储中,如首选项、数据库、文件等(取决于用例)。


推荐阅读