Android的四种数据存储方式: 1. SharedPreferences 2. SQLite 3. Content Provider 4. File --------------------- SharedPreferences: 1. 是一种轻型的数据存储方法; 2. 本质是基于 XML 文件存储 key-value 键值对数据; 3. 通常用来存储一些简单的配置信息。一般是放置当前应用的属性值,信息量不多,所以用数据库的话不划算,还可能造成时间上的浪费。 只能实现非常简单的存放数据和读取数据。SharedPreferences只能识别简单的数据类型,比如String、int,对于复杂的类型,比如自定义的类型,可能就无法存储了(或者通过转码操作转变为字符串也倒是可以存储)。 SharedPreferences属于Android自带的轻量级的存储类,效率并不是很高。 ---------------------- 要点: 1. SharedPreferences对象本身只能获取数据而不支持存储和修改,存储和修改是通过 Editor 对象实现的; 2. 实现 SharedPreferences 存储的步骤: (1)获得 SharedPreferences 对象; (2)获得 SharedPreferences.Editor 对象; (3)通过 Editor 接口的 putXxx 方法保存 key-value对,其中的Xxx表示不同的数据类型; (4)通过 Editor 接口的 commit 方法保存 key-value对。
1 public class MainActivity extends ActionBarActivity { 2 EditText username, password; 3 SharedPreferences pre; 4 CheckBox checkBox; 5 Editor editor; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.fragment_main); 11 // SharedPreferences pref = 12 // PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 13 14 /*-------------------------- 15 SharedPreferences pref = getSharedPreferences("myPref", MODE_PRIVATE); 16 Editor editor = pref.edit(); 17 editor.putString("name", "zy"); 18 editor.putInt("age", 22); 19 editor.putLong("time", System.currentTimeMillis()); 20 editor.putBoolean("default", true); 21 22 editor.commit(); 23 editor.remove("default"); 24 editor.commit(); 25 System.out.println(pref.getString("name", "xx")); 26 System.out.println(pref.getInt("age", 0)); 27 */ 28 29 // ----------------实例------------- 30 username = (EditText) findViewById(R.id.username); 31 password = (EditText) findViewById(R.id.password); 32 checkBox = (CheckBox) findViewById(R.id.savename); 33 pre = getSharedPreferences("userinfo", MODE_PRIVATE); 34 editor = pre.edit(); 35 String name = pre.getString("username", ""); 36 if (name == null || name.equals("")) { 37 checkBox.setChecked(false); 38 } else { 39 checkBox.setChecked(true); 40 username.setText(name); 41 } 42 43 } 44 45 public void doClick(View view) { 46 switch (view.getId()) { 47 case R.id.login: 48 String name = username.getText().toString().trim(); 49 String pass = password.getText().toString().trim(); 50 if ("zy".equals(name) && "123456".equals(pass)) { 51 if (checkBox.isChecked()) { 52 editor.putString("username", name); 53 editor.commit(); 54 55 } else { 56 editor.remove("username"); 57 editor.commit(); 58 } 59 Toast.makeText(MainActivity.this, "成功了", 0).show(); 60 } else { 61 Toast.makeText(MainActivity.this, "失败咯", 0).show(); 62 } 63 64 break; 65 66 case R.id.cancel: 67 break; 68 } 69 } 70 }