SharedPreferences记住用户密码 态判断应用是否首次启动等
2016-08-30 18:46
986 查看
一、Android SharedPreferences的简介
SharedPreferences是一种轻型的Android数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。比较经典的使用方式例如用户输入框对过往登录账户的存储。实现SharedPreferences存储的步骤如下:1、根据Context获取SharedPreferences对象
2、利用edit()方法获取Editor对象。
3、通过Editor对象存储key-value键值对数据。
4、通过commit()方法提交数据。
二、SharedPreferences和Editor 的关系
1、SharedPreferencespublic abstract SharedPreferences getSharedPreferences (String name, int mode)
方法得到一个sharedpreferences对象,参数name是preference文件的名字,mode则是方式,默认为0。
2、Editor
Editor可用于SharedPreferences数据的添加,删除,修改和查询。
Public abstract SharedPreferences.Editor putString (String key,String value)
通过执行commit()或是apply()方法,将会应用更改。
实例一记住密码功能的实现:
import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.View; import android.widget.CheckBox; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 读取sharedprefs中的值,并设置给对应的控件 readShared(); } private void readShared() { // 1.获取sharedprefs对象实例 SharedPreferences shared = getSharedPreferences("sharedprefs", MODE_PRIVATE); // 2.利用sharedprefs实例按key-value形式读取对应值 boolean value=shared.getBoolean("remind", false); // 3.把读取出来的值设置给对应控件或对象 CheckBox cb=(CheckBox) findViewById(R.id.cb); cb.setChecked(value); } // 点击记住密码 public void remind(View view) { // 向sharedpresf写入当前CheckBox的状态 // 1.获取sharedprefs对象实例 SharedPreferences shared = getSharedPreferences("sharedprefs", MODE_PRIVATE); // 2.利用sharedperfs实例获取Editor对象 Editor editor = shared.edit(); // 3.利用Editor写入对应的值:key-value editor.putBoolean("remind", ((CheckBox) view).isChecked()); // 4.提交:commit editor.commit(); } }
实例二:判断应用是否第一次启动
import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.widget.TextView; /** * 每次进入该Activity时,判断sharedprefs中是否有写入过值 * * 如果已经写过了,说明已经启动过 * * 如果没有写,则说明没启动过,再写入一个值 * */ public class MainActivity extends Activity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); // 先读再写 readShared(); } private void readShared() { // 1.获取sharedprefs对象 SharedPreferences shared = getSharedPreferences("firstRun", MODE_PRIVATE); // 2.读取对应值,如果没读取到该值,表明是第一次启动 boolean isFirst = shared.getBoolean("isFirst", true); // 设置一段文本给TextView if (isFirst) { tv.setText("这是第一次启动"); // 向sharedprefs写入值,表明已经启动过了 // 获取Editor对象 Editor editor = shared.edit(); // 写值 editor.putBoolean("isFirst", false); // commit editor.commit(); } else { tv.setText("已经启动过了"); } }
使用SharedPreferences的注意点 :
如果使用SharedPreferences用于数据存取,大部分人喜欢使用如下代码:public void writeSharedprefs(int pos) { SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("pos", pos); editor.commit(); } public int writeSharedprefs() { SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_PRIVATE); int pos = preferences.getInt("pos", 0); return pos; }
但很多人忽略了一点,就是跨进程使用的时候,你就会发现从SharedPreferences读出来的数据永远都是第一次写入的数据。 举例,例如播放器是一个独立进程,另外某个Activity是另一个独立进程,播放器与这个Activity利用SharedPreferences通信的时候,如果使用MODE_PRIVATE操作模式,就会出错。
所以,如果跨进程使用SharedPreferences的使用,需要使用MODE_MULTI_PROCESS模式,代码如下:
public void writeSharedprefs(int pos) {
SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_MULTI_PROCESS); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("pos", pos); editor.commit(); } public int writeSharedprefs() { SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_MULTI_PROCESS); int pos = preferences.getInt("pos", 0); return pos; }
相关文章推荐
- iOS判断应用是否首次启动
- 判断应用是否第一次启动并为其设置用户指导界面
- 牛腩购物11:完善用户注册 onblur 失去焦点 jquery ajax post方式使用 一般处理程序 判断用户是否存在 前台js的应用
- android 之判断某个应用是否已经启动
- 判断Android中应用是否为默认启动的方法
- iOS开发之应用首次启动显示用户引导
- iOS开发之应用首次启动显示用户引导
- AJAX判断用户是否存在,并且判断两次密码输入是否一致
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用
- ios判断用户第一次启动和怎么修改或添加应用的图标
- Ajax的应用:用过Ajax来实现不刷新页面的情况下判断用户是否存在
- iOS开发之应用首次启动显示用户引导 - 疯狂的萝卜 - 博客园
- IOS 判断是否首次启动APP
- 判断一个应用是否在运行,卸载应用,从一个应用启动另一个应用
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用
- iOS 开发之应用首次启动显示用户引导
- iOS开发之应用首次启动显示用户引导
- iOS开发笔记--应用首次启动显示用户引导
- iOS开发之应用首次启动显示用户引导