android - Activity 生命周期存储和恢复
问题描述
“使用 onSavedInstanceState(Bundle) 保存所有数据,但如果我的应用程序已关闭,则重新打开我的应用程序以及如何恢复保存的实例”
package com.example.savedandrestored;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText first,last;
Button submit;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
first=findViewById(R.id.firstname);
last=findViewById(R.id.lastname);
submit=findViewById(R.id.submit);
if(savedInstanceState!=null && savedInstanceState.containsKey("firstName") && savedInstanceState.containsKey("lastName")) {
first.setText(savedInstanceState.get("firstName").toString());
last.setText(savedInstanceState.get("lastName").toString());
}
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
savedInstanceState.putString("firstName",first.getText().toString());
savedInstanceState.putString("lastName",last.getText().toString());
onSaveInstanceState(savedInstanceState);
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
}
}
“当我打开应用程序并且没有执行新数据时它不会恢复数据”
解决方案
onSaveInstanceState
用于其他目的,例如在轮换中重新创建活动等。
使用 onSavedInstanceState(Bundle) 保存所有数据,但如果我的应用程序已关闭,则重新打开我的应用程序
然后你应该阅读一个活动的生命周期。
但你的问题的简短答案是
- 将您的数据保存在里面
onPause
- 取回它
onResume
像一个例子
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
//retrieve your data here and update UI here not onCreate
}
@Override
protected void onPause() {
super.onPause();
//Save your data here into shared prefs, or file, or DB (*last not recommended)
}
}
推荐阅读
- c# - 异常 - System.ServiceModel.Security.SecurityNegotiationException:“无法为 SSL/TLS 安全通道建立信任关系
- html - 为什么 flex 属性不能正常工作?
- javascript - 如何使用 CommonCrypto 快速解密
- android - Android Studio:没有找到类“com.example.kotlincoroutines.MainActivity”和类似的运行时错误
- database - 你能帮我关于使用Android studio QR码扫描仪扫描QR码以在扫描QR码后将数据保存在DATABASE上吗
- button - 如何在 JavaFX 中使用多个按钮?
- python - 部署 Django 应用程序时出现 Heroku 错误 H10
- javascript - 由于数据加载而反应过多的重新渲染?
- python - Django 发送电子邮件:django.core.exceptions.ImproperlyConfigured 错误
- android - 如何更改如何从当前用户 uid 更改为 id 收据