【问题标题】:Saving variable on application destroy doesn't work在应用程序销毁时保存变量不起作用
【发布时间】:2013-10-19 12:21:10
【问题描述】:

我想在退出活动后保存一些变量,这些变量是在我的 android 活动的生命周期内设置的,并在我再次启动活动时显示它们,但我似乎无法让事情正常工作。我是这样做的:

我创建了一个整数变量“test”:

public class MainActivity extends Activity {
int test = 1;

然后我写了一个方法来通过按下一个按钮来改变这个变量的值:

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() 方法中,我将这段代码用于获取并显示更改后的“测试”值:

@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);
    }
}

所以我打开应用程序,按下按钮将“测试”值从 1 更改为 2,然后退出应用程序,等待它从内存中正确删除(当应用程序管理器未在“缓存进程”中显示它时)窗口),再次启动应用程序,textView1 视图显示 1 而不是 2。我做错了什么?请帮忙!谢谢!

【问题讨论】:

  • 尝试将值存储在 SharedPreferences 而不是 InstanceState 中。当应用程序被销毁时,InstanceState 并没有真正保存,但是 SharedPrefernces 可以!
  • 如果您使用的是onDestroy(),可能不会像您认为的那样做。检查文档。

标签: java android save oncreate ondestroy


【解决方案1】:

我做错了什么?

什么都没有。实例状态不涵盖您所描述的场景。

大多数情况下,实例状态用于配置更改(例如,屏幕旋转)。其次,如果用户通过“退出”(我假设您的意思是返回)以外的方式离开您的应用程序并通过最近任务列表等方式返回给您,则使用实例状态。

【讨论】:

  • 感谢您的明确解释。我会尝试使用像 A.S. 这样的 SharedPreferences。说。谢谢你们!
【解决方案2】:

Developer.android 中所述,已保存的实例仅保存您的 Activity 状态,它不会按照您的意愿保存您的变量, 我建议你改用SharedPreference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多