数据存储
Android 系统中主要提供了三种方式用于简单地实现数据持久化功能,即:
文件存储、
SharedPreference 存储、
数据库存储。
当然,除了这三种方式之外,你还可以将数据保存在手机的 SD 卡中,不过使用文件、SharedPreference 或数据库来保存数据会相对更简单一些,而且比起将数据保存在 SD 卡中会更加的安全。
文件存储
package com.app.cceasy.datasavedemo; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import android.widget.Toast; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.Buffer; import java.security.spec.ECField; public class MainActivity extends AppCompatActivity { EditText inputEt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inputEt = (EditText) findViewById(R.id.id_et_please_input); String content = this.dataLoad(); if(null != content){ inputEt.setText(content); inputEt.setSelection(content.length()); Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show(); } } public String dataLoad(){ BufferedReader reader = null; StringBuilder content = new StringBuilder(); String line = null; FileInputStream in; try{ in = openFileInput("data"); reader = new BufferedReader(new InputStreamReader(in)); while(null!=(line = reader.readLine())){ content.append(line); } }catch (Exception e){ e.printStackTrace(); }finally { try{ if(reader != null){ reader.close(); } }catch (Exception e){ e.printStackTrace(); } } return content.toString(); } public void dataSave(String strs){ FileOutputStream out = null; BufferedWriter writer = null; try{ out = openFileOutput("data", Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(strs); }catch (Exception e){ e.printStackTrace(); }finally { try{ if (writer != null) writer.close(); }catch (Exception e){ e.printStackTrace(); } } } @Override protected void onDestroy() { super.onDestroy(); dataSave(inputEt.getText().toString()); } }
SharedPreference 存储
要想使用SharedPreferences来存储数据
第一步:获取SharedPreferences对象
三种方法:
--Context 类中的 getSharedPreferences()方法
--Activity 类中的 getPreferences()方法
--PreferenceManager 类中的 getDefaultSharedPreferences()方法
之后就可以开始向 SharedPreferences 文件中存储数据了,
第二步:向SharedPreferences文件中存储数据
1. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象。
2. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用
putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。
3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作。
---->
存储数据:
//一、得到SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("account and password",MODE_PRIVATE);
//二、存放数据
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("REMEMBER_PASSWORD",true);
editor.putString("ACCOUNT",account);
editor.putString("PASSWORD",password);
editor.commit();
读取数据并恢复数据至输入框:
SharedPreferences sharedPreferences = getSharedPreferences("account and password", MODE_PRIVATE); Boolean isRemembered = sharedPreferences.getBoolean("REMEMBER_PASSWORD", false); if(isRemembered){ String accountstr = sharedPreferences.getString("ACCOUNT", ""); String passwordstr = sharedPreferences.getString("PASSWORD",""); textAccount.setText(accountstr); textPassword.setText(passwordstr); checkBox4RememberPassword.setChecked(true); }