应用关闭时数据会丢失

时间:2015-09-03 07:29:21

标签: android

我希望用户输入一些数据并将其存储在变量中以便稍后显示。但是,当下次先前输入的数据丢失时打开应用程序。我该怎么办?

2 个答案:

答案 0 :(得分:2)

试试这段代码

   private SharedPreferences sharedpreferences;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      String MyPREFERENCES=this.getPackageName();
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
      //your rest code here
    }

    //write data
    private void storeUserData(String val1){

        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString("uName", val1);
        editor.commit();
    }

    //read data
    private String read userData(){
        return this.sharedpreferences.getString("uName", "");
    }

答案 1 :(得分:0)

当活动开始时,所有变量都将重新分配内存,因此旧的内存缓冲区已被破坏。

要解决此问题,您可以使用android中的SharedPreference

创建共享偏好:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
Editor editor = pref.edit();

将数据存储为KEY / VALUE对:

editor.putBoolean("key_name1", true);           // Saving boolean - true/false
editor.putInt("key_name2", "int value");        // Saving integer
editor.putFloat("key_name3", "float value");    // Saving float
editor.putLong("key_name4", "long value");      // Saving long
editor.putString("key_name5", "string value");  // Saving string

保存SharedPreferences中的更改

editor.commit(); // commit changes

获取SharedPreferences数据

pref.getBoolean("key_name1", null);         // getting boolean
pref.getInt("key_name2", null);             // getting Integer
pref.getFloat("key_name3", null);           // getting Float
pref.getLong("key_name4", null);            // getting Long
pref.getString("key_name5", null);          // getting String

从SharedPreferences中删除键值

editor.remove("key_name3"); // will delete key key_name3
editor.remove("key_name4"); // will delete key key_name4

删除后保存SharedPreferences中的更改

editor.commit(); // commit changes

清除SharedPreferences中的所有数据

editor.clear();
editor.commit();