31-2 使用SharedPreference保存数据.
- 格式:ppt
- 大小:2.24 MB
- 文档页数:10
在上一讲中,我们学习了如何将数据存储在SD卡中[数据存储之File文件存储 [即SD卡的写入与读取]],这是一种存储方式,这一讲我们来学习一下使用SharedPreferences存储数据。
1.SharedPreferences 介绍1) SharedPreferences 是一种参数共享的存储方式,它是通过键值对key-value的形式来储存的。
所以读取方式也是通过读取键值对来的。
2) 这种存储方式主要用在存储一些简单的状态信息,比如在实际的软件界面设计中,我们需要保存一些系统的参数,例如屏幕大小和亮度、高度等。
在没有数据的情况下我们把这些参数设置到参数共享的文件中以便下次访问。
3) SharedPreferences的基本用法:1、SharedPreferences preferences=context.getSharedPreferences("login",Context.MODE_PRIVATE);2、通过SharedPreferences .edit方法获得一个Editor对象。
3、通过SharedPreferences 的Editor.putXXX方法放置键值对保存到文件中。
4、最后调用commit方法保存文件。
只有事务结束之后才能提交。
4) 查看 API文档中的SharedPreferences类详细介绍这个类 SharedPreferences 提供了一个通用的框架让你存储和检索已经存在的原生数据类型的键值对.你可以使用SharedPreferences 来保存任何的原生数据:booleans, floats,ints, longs, and strings. (所以这边不建议用共享参数来保存一些复杂的数据类型:比如对象,图片等) 这些数据都会在用户会话期间保留(在应用程序进程关闭掉存储起来)在你的应用获取到一个 SharedPreferences 对象,需要使用下面两种方法的一种:(1) getSharedPreferences()(2) getPreferences()两种方式的区别:调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.5) 写入数据1. 调用 edit() 方法来得到一个SharedPreferences.Editor.2. 调用 putBoolean() 和 putString()方法来添加数据3. 调用 commit() 方法来提交新的数据。
Android SharedPreferences存储数据 用法解析最近做一个关于股票搜索功能的应用,其中有一个关于自选股票的存储,数据量也不大,就想到了SharePerferences,但对它我也也只是知道,于是乎做了个例子,与大家分享,希望能一起了解它。
首先,我们得了解SharePerferences是一种以键值对方式存储,通过XML形式将数据存储在设备中,网络上也列举了很多例子,其中估计谈论最多的就是存储登陆用户的用户名和密码。
其中有一个最重要的环节就是它只能在创建的那个包中使用,也就是在一个应用中使用。
(说到这自我感觉它很像我们在编写B/S应用中的cookie,不知道说得对不对)。
其次,一般SharePerferences保存的存储文件都存放在/data/data/<package name>/shares_prefs文件夹下。
剩下的就是对其进行添加、删除、修改等操作,同时我在了解它的时候在网上看到有朋友说clear文件之后数据还在,估计多半是没有commit()的缘故。
下面是一个PreferceHelper类:Java代码1.publicclassPreferceHelper{2.3.4.5.SharedPreferencessp;6.7.8.9.SharedPreferences.Editoreditor;10.11.12.13.Contextcontext;14.15.16.17.StringXMLNAME;18.19.20.21.publicPreferceHelper(Contextc,Stringname){22.23.24.25.context=c;26.27.28.29.XMLNAME=name;30.31.32.33.sp=context.getSharedPreferences(name,Context.MODE_PRIVATE);34.35.36.37.editor=sp.edit();38.39.40.41.}42.43.44.45.publicvoidputValue(Stringkey,Stringvalue){46.47.48.49.editor=sp.edit();50.51.52.53.editor.putString(key,value);54.55.56.mit();58.59.60.61.}62.63.64.65.publicStringgetValue(Stringvalue){66.67.68.69.returnsp.getString(value,null);70.71.72.73.}74.75.76.77.publicvoidRemoveItem(Stringkey){78.79.80.81.SharedPreferencess=context.getSharedPreferences(XMLNAME,0);82.83.84.85.s.edit().remove(key).commit();86.87.88.89.}90.91.92.93.publicvoidClearData(){94.95.96.97.editor.clear().commit();98.99.100.101.}102.103.104.105.}。
在Android开发中,我们经常需要保存一些用户的设置或者应用的状态,这时就需要使用Shared Preferences来保存这些数据。
在使用Shared Preferences保存数据时,我们可能会遇到需要保存Enum类型数据的情况。
那么,在这种情况下,我们应该如何使用Shared Preferences来保存Enum类型的数据呢?接下来,我将为大家详细介绍如何使用Shared Preferences保存Enum类型的数据。
1. 了解Enum类型我们需要了解Enum类型的定义和使用。
Enum类型是一种特殊的数据类型,它可以用来定义一组常量。
在Java中,Enum类型是一种引用数据类型,它可以包含方法和字段。
在Android开发中,Enum类型经常被用来表示一些固定的选项,比如性别、星期几、状态等。
2. 使用Shared Preferences保存Enum类型数据的方式当我们需要保存Enum类型的数据时,可以将Enum类型转换为String类型,然后再使用Shared Preferences保存该String类型的数据。
下面是保存Enum类型数据的具体步骤:2.1 定义Enum类型我们需要定义一个Enum类型的类,比如定义一个表示性别的Enum类型:```javapublic enum Gender {MALE,FEMALE}```2.2 将Enum类型转换为String类型在将Enum类型数据保存到Shared Preferences之前,我们需要将Enum类型数据转换为String类型。
可以使用Enum的`name()`方法来获取Enum常量的名称,然后将其保存到Shared Preferences中。
```javaGender gender = Gender.MALE;String genderString = ();```2.3 使用Shared Preferences保存Enum类型数据接下来,我们可以使用Shared Preferences来保存转换后的String类型数据。
sharedpreferences存储集合1. 什么是SharedPreferences?在Android开发中,SharedPreferences是一种轻量级的存储键值对数据的方式,通常用于存储应用程序的配置信息或用户的偏好设置。
SharedPreferences使用XML文件来存储数据,可以方便地实现数据的读取和写入。
2. SharedPreferences的使用场景SharedPreferences适用于以下场景:•存储应用程序的配置信息,如是否首次打开应用、语言设置等。
•存储用户的偏好设置,如主题颜色、字体大小等。
•存储用户的登录状态、登录凭证等。
3. SharedPreferences的基本操作3.1 获取SharedPreferences对象要使用SharedPreferences,首先需要获取SharedPreferences对象。
可以通过以下方法来获取:SharedPreferences sharedPreferences = getSharedPreferences("config", Context.M ODE_PRIVATE);其中,第一个参数是SharedPreferences的名称,第二个参数是访问模式。
MODE_PRIVATE表示只有当前应用程序可以访问该SharedPreferences。
3.2 存储数据使用SharedPreferences存储数据非常简单,可以使用SharedPreferences.Editor对象的put方法来存储数据。
以下是一些常用的存储方法示例:SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("username", "张三");editor.putInt("age", 20);editor.putBoolean("isLogin", true);editor.apply(); // 提交数据其中,putString方法用于存储字符串类型的数据,putInt方法用于存储整型数据,putBoolean方法用于存储布尔型数据。
Android进阶——Sharedpreferences保存对象和图⽚等复杂类型的数据Android进阶——Sharedpreferences保存对象和图⽚等复杂类型的数据⼀、保存和读取基本数据类型1、保存基本类型的数据/*** 根据传⼊的prefereces的⽂件名设置指定key-valeu*@param context* @param preferenceName SharedPreferences的name* @param key 对应的Key键* @param object 对应的各种类型的值*/public static void saveKeyValue(Context context, String preferenceName, String key, Object object){ SharedPreferencessharedPreferences=context.getSharedPreferences(preferenceName,context.MODE_PRIV ATE); SharedPreferences.Editor editor=sharedPreferences.edit();if (object instanceof String) {editor.putString(key, (String) object);} else if (object instanceof Integer) {editor.putInt(key, (Integer) object);} else if (object instanceof Boolean) {editor.putBoolean(key, (Boolean) object);} else if (object instanceof Float) {editor.putFloat(key, (Float) object);} else if (object instanceof Long) {editor.putLong(key, (Long) object);} else {editor.putString(key, object.toString());}/doc/df6fa1f4162ded630b1c59eef8c75fbfc77d9496.html mit();}2、读取基本类型的数据/*** 根据传⼊的prefereces的⽂件名设置指定key-valeu*@param context* @param preferenceName SharedPreferences的name* @param key 对应的Key键* @param object 对应的各种类型的值*/public static Object getValueByKey(Context context, String preferenceName,String key,Object object){ SharedPreferencessharedPreferences=context.getSharedPreferences(preferenceName,context.MODE_PRIV ATE);if (object instanceof String) {return sharedPreferences.getString(key, (String) object);} else if (object instanceof Integer) {return sharedPreferences.getInt(key, (Integer) object);} else if (object instanceof Boolean) {return sharedPreferences.getBoolean(key, (Boolean) object);} else if (object instanceof Float) {return sharedPreferences.getFloat(key, (Float) object);} else if (object instanceof Long) {return sharedPreferences.getLong(key, (Long) object);} else {return sharedPreferences.getString(key, object.toString());}}⼆、保存和读取图⽚SharedPreferences原则上只能将字符串以key-value的形式保存,但是万物皆⼆进制,所以我们可以采⽤编码的⽅式将任何⼆进制数据转化为字符串,从⽽将可以将⼆进制数据保存在SharedPreferences⽂件中,⽽最常⽤的编码格式是Base64.1、保存⼆进制数据/*** @param context* @param preferenceName* @param resId* @param key*/public static void saveDrawable(Context context, String preferenceName,int resId,String key) {SharedPreferencessharedPreferences=context.getSharedPreferences(preferenceName,context.MODE_PRIV ATE); SharedPreferences.Editor editor=sharedPreferences.edit();Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resId);ByteArrayOutputStream baos = new ByteArrayOutputStream();/doc/df6fa1f4162ded630b1c59eef8c75fbfc77d9496.htmlpress(/doc/df6fa1f4162ded630b1c59eef8c75fbfc77d9496.html pressFormat.PNG, 50, baos);String imageBase64 = newString(Base64.encodeToString(baos.toByteArray(),Base64.DEFAULT));editor.putString(key,imageBase64 );/doc/df6fa1f4162ded630b1c59eef8c75fbfc77d9496.html mit();}2、读取⼆进制数据public static Drawable getDrawableByKey(Context context, String preferenceName,String key) {SharedPreferencessharedPreferences=context.getSharedPreferences(preferenceName,context.MODE_PRIV ATE);String /doc/df6fa1f4162ded630b1c59eef8c75fbfc77d9496.html emp = sharedPreferences.getString(key, "");ByteArrayInputStream bais = new ByteArrayInputStream(Base64.decode(temp.getBytes(), Base64.DEFAULT));return Drawable.createFromStream(bais, "");}三、保存和读取序列化的对象由于⼆进制数据经过编码后可以⽤SharedPreferences以字符串的形式存储,所以保存对象也成为了可能,但是这个类必须是可序列化即implements Serializable(实际上Serializable接⼝是个空接⼝,只是为了标记该对象是被序列化的),然后可以通过ObjectOutputStream 保存再转为⼆进制存储。
flutter sharedpreferences保存数据结构在Flutter中使用`SharedPreferences`保存数据时,通常会将数据以键值对的形式存储在本地。
由于`SharedPreferences`只支持基本数据类型,如字符串、整数、浮点数等,如果需要保存复杂的数据结构,可以考虑将其序列化为字符串再保存。
以下是一个简单的示例,展示如何使用`SharedPreferences`保存和读取一个简单的数据结构,如Map:```dartimport'package:flutter/material.dart';import'package:shared_preferences/shared_preferences.dart';import'dart:convert';void main(){runApp(MyApp());}class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context){return MaterialApp(home:MyHomePage(),);}}class MyHomePage extends StatefulWidget{@override_MyHomePageState createState()=>_MyHomePageState();}class_MyHomePageState extends State<MyHomePage>{TextEditingController_controller=TextEditingController(); SharedPreferences_prefs;Map<String,dynamic>_data;@overridevoid initState(){super.initState();_initData();}//初始化SharedPreferences和数据_initData()async{_prefs=await SharedPreferences.getInstance();String jsonData=_prefs.getString('myData');if(jsonData!=null){_data=json.decode(jsonData);_controller.text=_data['name']??'';}else{_data={'name':''};}}//保存数据_saveData(){_data['name']=_controller.text;String jsonData=json.encode(_data);_prefs.setString('myData',jsonData);}@overrideWidget build(BuildContext context){return Scaffold(appBar:AppBar(title:Text('SharedPreferences示例'),),body:Padding(padding:EdgeInsets.all(16.0),child:Column(crossAxisAlignment:CrossAxisAlignment.start, children:<Widget>[TextField(controller:_controller,decoration:InputDecoration(labelText:'名字'), ),SizedBox(height:16.0),RaisedButton(onPressed:(){_saveData();Scaffold.of(context).showSnackBar(SnackBar(content:Text('数据已保存'),),);},child:Text('保存'),),],),),);}}```这个示例中,我们使用`SharedPreferences`存储一个包含名字的简单`Map`数据结构。
sharedpreferences 保存enum SharedPreferences在Android开发中是一种用于存储和访问数据的机制,常用于保存应用程序的配置信息、用户偏好设置、数据缓存等。
在某些情况下,我们可能需要保存Enum(枚举)类型的数据到SharedPreferences中,本文将介绍如何进行这样的操作。
1. 引言Enum是一种特殊的数据类型,它是一组预定义的常量值的集合,可以用于表示特定的状态或选项。
在一些应用场景中,我们需要将Enum类型的数据保存到SharedPreferences中,以实现应用程序的状态持久化。
下面将介绍一种简单的方法来完成这个任务。
2. 实现方法当我们需要将Enum类型的数据保存到SharedPreferences中时,我们可以将Enum常量对应的值转换为String类型,然后再存储到SharedPreferences中。
首先,我们需要定义一个保存Enum数据的方法,如下所示:```public void saveEnumData(EnumType enumValue) {SharedPreferences sharedPreferences =getSharedPreferences("YourPrefName", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("enumKey", ());editor.apply();}```在上述代码中,我们通过getSharedPreferences方法获取了一个SharedPreferences实例,并指定了一个唯一的名称作为标识,您可以根据自己的需求进行修改。
然后,我们获取了一个SharedPreferences.Editor实例,并通过putString方法将Enum类型的值转换为String类型,并存储到SharedPreferences中,键的名称可以根据实际情况进行修改。
在Android开发中,我们经常会用到sharepreferences来进行数据的存储和管理。
而有时候我们可能会需要知道这些存储的数据到底是放在哪个路径下的,今天我将为您详细解释sharepreferences存储路径的相关知识。
1. 什么是sharepreferencesSharepreferences是Android中一种轻量级的数据存储方式,用来保存一些简单的配置信息。
它基于键值对(key-value)的方式进行数据的存储,可以存储基本数据类型和字符串。
在Android中,每个应用都有自己的sharepreferences存储空间,相互之间不会互相干扰。
通过sharepreferences,我们可以方便地进行数据的读取和修改。
2. sharepreferences存储路径在Android中,sharepreferences的数据是存储在每个应用的私有目录下的。
具体来说,它存储在/data/data/包名/shared_prefs/目录下,其中“包名”表示你的应用在Android系统中的唯一标识。
在这个目录下,每个sharepreferences文件都以XML格式存储,文件名就是你所创建的sharepreferences的名称。
这种私有目录的设计保证了应用数据的安全性和隐私性。
3. 为什么需要了解sharepreferences存储路径了解sharepreferences存储路径对于开发者来说是十分重要的。
当我们需要查看或导出sharepreferences存储的数据时,就需要知道它的存储路径。
如果我们的应用需要卸载或者清除数据时,也需要知道这个路径。
另外,有时我们可能会需要手动修改sharepreferences存储的数据,这时也需要知道存储路径。
了解sharepreferences存储路径可以帮助我们更好地进行应用开发和调试。
4. 如何访问sharepreferences存储路径在Android开发中,我们可以通过adb命令来访问sharepreferences存储路径。
数据存储SharePreferences详解1.SharedPreferences存储SharedPreferences时使⽤键值对的⽅式来存储数据的,也就是在保存⼀条数据时,需要给这条数据提供⼀个对应的键,这样在读取的时候就可以通过这个键把相应的值取出来SharePreferences是⼀个接⼝,不能直接使⽤,但可以通过以下两种⽅法获得:1.1.1Context类的getSharePreferences(String name ,ine mode)⽅法来获得⼀个SharePreferences对象:此⽅法接收两个参数,第⼀个参数⽤于指定SharedPreference⽂件的名称,即存储XML⽂件的名称,如果存在,则会直接引⽤,如果指定的⽂件不存在则会创建⼀个,SharedPreference⽂件都是存放在/data/data/<包名>/shared_prefs/存储的XML⽂件⽬录下,第⼆个参数表⽰⽂件的存储模式(该⽅式创建的XML⽂件可以被同⼀个软件的Activity引⽤)。
⽂件的⼏种存储模式:MODE_PRIVATE:表⽰私有⽂佳,该⽂件智能被创建他的⽂件所访问MODE_APPEND:表⽰新的存储内容会添加在原有⽂件内容的后⾯。
MODE_WORLD_READABLE:表⽰该⽂件能被所有的⽂件读取,但是不可以写⼊。
MODE_WORLD_WEITABLE:表⽰该⽂件能被所有的⽂件写⼊,也可以读取MODE_MULTI_PROCESS:表⽰改⽂件可以被多个进程同时访问,适⽤于Android2.3及之后的版本。
1.1.2:调⽤Activity对象的getPreferences(int mode)⽅法该⽅法有⼀个参数,表⽰⽂件的存储模式,具体模式童第轶中相同,这种⽅法获得的对象只能被该⽅法所在的Activity所调⽤1.2还要创建⼀个SharePreferences.Editor类的对象,该类负责具体的写⼊操作,创建⽅法使通过SharePreferences类的edit()⽅法来创建。