Android 简单数据存储之SharedPreferences简介(含方法及示例)
2016-10-13 12:52
435 查看
有时候,我们需要为应用程序保存少量的数据,而且这些数据格式简单,通常都是普通的字符串或标量类型的值,比如一些配
置信息、玩家的登录信息、小游戏的积分等等。对于这些数据的存储,我个人推荐使用 SharedPreferences 进行保存。
SharedPreferences 保存的数据主要是简单类型的 key—value 对。SharedPreferences 接口主要负责读取应用程序
的 Preferences 数据,我们通常会用的方法有如下几种:
boolean contains(String key) :判断 SharedPreferences 是否包含特定 key 的数据。
xxx getXxx(String key, xxx defValue) :获取 SharedPreferences 数据里指定 key 对应的 value,如果该 key 不存在,则返回默
认值 defValue。其中的xxx是各种基本类型,如int、String等。
SharedPreferences 接口本身没有提供写入数据的能力,我们可以通过调用 SharedPreferences 的 edit() 方法获取对应的
Editor
对象,Editor
对象提供了向 SharedPreferences 写入数据的方法:
SharedPreferences.Editor
clear() :清空 SharedPreferences 里面的所有数据。
4000
SharedPreferences.Editor putXxx(String key, xxx value) :向 SharedPreferences 里面存入指定 key 对应的数据。其中的xxx是各
种基本类型,如int、String等。
SharedPreferences.Editor remove(String key) :删除 SharedPreferences 中指定 key 对应的数据项。
boolean commit() :当 Editor 编辑完成后,调用该方法提交修改。不过这里推荐使用 apply() 来代替,因为 commit 会立即执行
写入操作,而
apply 是在后台异步执行的。
SharedPreferences 本身是一个接口,程序无法直接创建 SharedPreferences 实例,只能通过 Context 提供的
getSharedPreferences(String name, int mode) 方法来获取 SharedPreferences 实例,该方法的第二个参数支持一下几个值:
Context.MODE_PRIVATE :指定该 SharedPreferences 数据只能被本应用程序读写。
Context.MODE_WORLD_READABLE :指定该 SharedPreferences 数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE :指定该 SharedPreferences 数据能被其他应用程序读写。
不过 Android 4.2 开始,不在推荐使用后两种模式,因为容易导致安全漏洞。如果需要暴露数据给其他应用访问,应该使用
ContentProvider。
以下是一个对 SharedPreferences 进行简单读写的 Demo ,这里演示的是记录用户名和密码并自动填充的功能:
置信息、玩家的登录信息、小游戏的积分等等。对于这些数据的存储,我个人推荐使用 SharedPreferences 进行保存。
SharedPreferences 保存的数据主要是简单类型的 key—value 对。SharedPreferences 接口主要负责读取应用程序
的 Preferences 数据,我们通常会用的方法有如下几种:
boolean contains(String key) :判断 SharedPreferences 是否包含特定 key 的数据。
xxx getXxx(String key, xxx defValue) :获取 SharedPreferences 数据里指定 key 对应的 value,如果该 key 不存在,则返回默
认值 defValue。其中的xxx是各种基本类型,如int、String等。
SharedPreferences 接口本身没有提供写入数据的能力,我们可以通过调用 SharedPreferences 的 edit() 方法获取对应的
Editor
对象,Editor
对象提供了向 SharedPreferences 写入数据的方法:
SharedPreferences.Editor
clear() :清空 SharedPreferences 里面的所有数据。
4000
SharedPreferences.Editor putXxx(String key, xxx value) :向 SharedPreferences 里面存入指定 key 对应的数据。其中的xxx是各
种基本类型,如int、String等。
SharedPreferences.Editor remove(String key) :删除 SharedPreferences 中指定 key 对应的数据项。
boolean commit() :当 Editor 编辑完成后,调用该方法提交修改。不过这里推荐使用 apply() 来代替,因为 commit 会立即执行
写入操作,而
apply 是在后台异步执行的。
SharedPreferences 本身是一个接口,程序无法直接创建 SharedPreferences 实例,只能通过 Context 提供的
getSharedPreferences(String name, int mode) 方法来获取 SharedPreferences 实例,该方法的第二个参数支持一下几个值:
Context.MODE_PRIVATE :指定该 SharedPreferences 数据只能被本应用程序读写。
Context.MODE_WORLD_READABLE :指定该 SharedPreferences 数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE :指定该 SharedPreferences 数据能被其他应用程序读写。
不过 Android 4.2 开始,不在推荐使用后两种模式,因为容易导致安全漏洞。如果需要暴露数据给其他应用访问,应该使用
ContentProvider。
以下是一个对 SharedPreferences 进行简单读写的 Demo ,这里演示的是记录用户名和密码并自动填充的功能:
public class LoginActivity extends Activity implements View.OnClickListener { private EditText edUsername, edPassword; private LinearLayout checkBox; private CheckBox cbRememberPassword; private Button btnLogin; private String username, password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); edUsername = (EditText) findViewById(R.id.edUsername); edPassword = (EditText) findViewById(R.id.edPassword); checkBox = (LinearLayout) findViewById(R.id.checkBox); checkBox.setOnClickListener(this); cbRememberPassword = (CheckBox) findViewById(R.id.cbRememberPassword); btnLogin = (Button) findViewById(R.id.btnLogin); btnLogin.setOnClickListener(this); SharedPreferences sharedPreferences = getSharedPreferences("Login", Activity.MODE_PRIVATE); if (sharedPreferences.contains("Username") && sharedPreferences.contains("Password")) { username = sharedPreferences.getString("Username", ""); password = sharedPreferences.getString("Password", ""); edUsername.setText(username); edPassword.setText(password); cbRememberPassword.setChecked(true); } else { edUsername.setText(""); edPassword.setText(""); cbRememberPassword.setChecked(false); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.checkBox: if (cbRememberPassword.isChecked()) { cbRememberPassword.setChecked(false); } else { cbRememberPassword.setChecked(true); } break; case R.id.btnLogin: username = edUsername.getText().toString(); password = edPassword.getText().toString(); if (username.trim().equals("")) { Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show(); } else if (password.trim().equals("")) { Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show(); } else { if (cbRememberPassword.isChecked()) { SharedPreferences sharedPreferences = getSharedPreferences ("Hsgu1000", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("Username", username); editor.putString("Password", password); editor.apply(); } Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); } break; } } }
相关文章推荐
- Android数据存储SharedPreference用法简单示例
- Android本地存储数据方法(超简单)
- Android编程简单解析JSON格式数据的方法示例
- Android数据存储(3)SQLite简介和简单的登录与注册源代码
- android数据存储_SharedPreferences的简单使用
- android(19)_数据存储与访问_SQLite数据库_使用SQLiteDatabase提供的增删改查方法
- Android中数据存储的5种方法
- Android基本数据存储方法
- Android 数据存储的一种最简单的方式 SharedPreferences
- android 简单数据存储SharedPreferences
- 【PHP】数据的“存储”与“可读”状态简单转换方法
- Android中数据存储的几种方法
- Android数据存储(四) SQLite数据库简介
- Android数据存储的方法
- android中数据存储的contentprovider的使用方法
- 简单的三方登录SDK示例,Android Activity之间数据的传递
- Android 中SQlite数据中简单示例的表的创建、插入和查询
- Android私有数据内部存储方法
- 【Android开发学习07】存储简单数据的利器--Preferences
- Android中数据存储的5中方法