我希望在退出活动后保存一些变量,这些变量是在我的android活动的生命周期中设置的,并在我再次启动活动时显示它们但我似乎无法让事情正常工作。我是这样做的:
我创建了一个整数变量“test”:
public class MainActivity extends Activity {
int test = 1;
然后我写一个方法来通过按下按钮来改变这个varibale的值:
public void changeValueTest(View view) {
this.test = 2;
}
然后我使用onSaveInstanceState()方法保存更改的值:
static final String TEST = "test variable";
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt(TEST, this.test);
super.onSaveInstanceState(savedInstanceState);
}
然后在onCreate()方法中,我将此代码用于获取并显示已更改的“test”值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
this.test = savedInstanceState.getInt(TEST);
TextView textView1 = (TextView)findViewById(R.id.textView1);
textView1.setText("Current test value is: " + test);
}
}
所以我打开应用程序,按下按钮将“test”值从1更改为2,然后退出应用程序,等待它从内存中正确删除(当应用程序管理器未在“缓存进程”中显示时)窗口),再次启动应用程序,textView1视图显示1而不是2.我做错了什么?请帮忙!谢谢!
答案 0 :(得分:1)
如Developer.android中所述,Saved实例仅保存您的Activity状态,它不会保存您想要的变量, 我建议你改用SharedPreference。
答案 1 :(得分:1)
我做错了什么?
无。实例状态不包括您描述的场景。
大多数情况下,实例状态用于配置更改(例如,屏幕旋转)。其次,如果用户通过“退出”以外的方式离开您的应用程序(我假设您的意思是BACK),则使用实例状态,并通过最近任务列表等方式返回给您。