如何保存Activity的状态?应用程序关闭时所有信息都会丢失

问题描述 投票:0回答:1

我需要我的应用程序保存图像和未来文本字段的状态,以便当用户关闭应用程序甚至重新启动手机时,数据仍然存在。这有点像日记。

class stageOne1 : AppCompatActivity() {

private lateinit var manifestImage: ImageView
companion object {
    const val IMAGE_REQUEST_CODE = 100
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_stage_one1)

    manifestImage = findViewById(R.id.manifestImage)
    manifestImage.setOnClickListener{
        pickImageGallery()
    }
}

private fun pickImageGallery(){
    val intent = Intent(Intent.ACTION_PICK)
    intent.type = "image/*"
    startActivityForResult(intent, IMAGE_REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?){
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == IMAGE_REQUEST_CODE && resultCode == RESULT_OK){
        manifestImage.setImageURI(data?.data)
    }
}

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
}

override fun onRestoreInstanceState(
    savedInstanceState: Bundle?,
    persistentState: PersistableBundle?
) {
    super.onRestoreInstanceState(savedInstanceState, persistentState)
}

}

如果您需要查看我的 XML,请告诉我。

提前致谢。

android kotlin
1个回答
0
投票

您可以使用共享首选项,这将帮助您在关闭以及重新启动手机时保存应用程序的状态,但请确保如果删除应用程序的数据或卸载它,则其数据将会丢失。

sharedPreferences就是通过这种方式来存储的

SharedPreferences sharedPreferences = getSharedPreferences("login_prefs", MODE_PRIVATE);
                                SharedPreferences.Editor editor = sharedPreferences.edit();
                                editor.putBoolean("isLoggedIn", true);
                                editor.apply();

这里您也可以使用字符串值来代替 putBoolean

这是检索它的方法

SharedPreferences sharedPreferences = getSharedPreferences("login_prefs", MODE_PRIVATE);
        boolean isLoggedIn = sharedPreferences.getBoolean("isLoggedIn",false);

通过使用它,请确保应用程序的层次结构或流程是按顺序排列的,否则您将面临错误

© www.soinside.com 2019 - 2024. All rights reserved.