sharedpreferences存储数据(sharedpreference可以存储什么数据类型)
本篇文章给大家谈谈sharedpreferences存储数据,以及sharedpreference可以存储什么数据类型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Android 轻量级存储方案(SharedPreferences、MMKV、Jetpack DataStore)
- 2、Android中SharedPreferences存储
- 3、SharedPreferences究竟把数据保存到了哪里?
- 4、sharedpreference存储数据的权限有哪些
- 5、Flutter知识点:数据存储之SharedPreferences
- 6、如何在android中利用shared preferences存储和读取数据
Android 轻量级存储方案(SharedPreferences、MMKV、Jetpack DataStore)
SharedPreferences使用:
SharedPreferencesImpl#EditorImpl.java 中最终执行了apply()函数:
创建一个awaitCommit的Runnable任务并将其加入到QueuedWork中,该任务内部直接调用了CountDownLatch.await()方法,即直接在UI线程执行等待操作,那么我们看QueuedWork中何时执行这个任务。
QueuedWork.java:
waitToFinish()方法会尝试从Runnable任务队列中取任务,如果有的话直接取出并执行,我们看看哪里调用了waitToFinish():
ActivityThread.java
可以看到在ActivityThread中handleStopActivity、handleStopService方法中都会调用waitToFinish()方法,即在Activity的onStop()中、Service的onStop()中都会先同步等待写入任务完成才会继续执行。指洞
所以apply()虽然是异步写入磁盘,但是如果此时执行到Activity/Service的onStop(),依然可能会阻塞UI线程导致ANR。
Jetpack DataStore 是一种改进的数据存储解决方案,允许您使用 协议缓冲区 存储键值对或类型化对象。
DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。并唯亏枯且可以对SP数据进行迁移,旨在取代SP。如果正在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore。
Jetpack DataStore 有两种实现方式:
1.添加依赖项:
2.构建Preferences DataStore:
当我们构建后,会在 /data/data/package name/files/ 下创建名为 preferences_dataStore 的文件如下:
1.构建Preferences DataStore
2.存储的实体类:
3.数据存储/获取:
Activity中:
ViewModel中:
Repository类中:
SP迁移至Preferences DataStore
如果想将项目的SP进行迁移,只需要在Preferences DataStore在构建时配置参数3,如下:
这样构建完成时,SP中的内容也会迁移到Preferences DataStore中了,注意迁移是一次性的,即执行迁移后,SP文件会被删除.
MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。
1.添加依赖:
2.Application的onCreate方法中初始化
3.数据存储/获取:
github地址空亮:
[img]Android中SharedPreferences存储
一、 SharedPreferences存储简称sp,用于少量数据存储且数据结构简单,是一种通用的数据持久化框架。
1、用于存蠢晌改储和读取 key-value 类型的原始基本数据对。
2、目前仅支持 boolean、float、int、long 和 string 等基本类型的存储。
3、特点: 例如上次登录谨神的用户名、上次最后设置的信息等,通过保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有设置。
4、若是需要修改直接进行覆盖即可
存贮步骤 :①、使用getSharedPreferences获得SharedPreferences对象 (参1为自定义)
如:SharedPreferences sharedPreferences = getSharedPreferences("can", MODE_PRIVATE);
②、使用SharedPreferences获得edi对象
如:SharedPreferences.Editor edit = sharedPreferences.edit();
③、使用SharedPreferences.Editor的接口的put方法保存key-value
如:edit.putString("name","张三");
④、使用SharedPreferences.Editor接口的commit方法保存key-value对象
如:edit.commit();
删除步骤 :①、使用getSharedPreferences获得SharedPreferences对象 (参1为自定义(已有))
如:SharedPreferences sharedPreferences = getSharedPreferences("can", MODE_PRIVATE);
②、使用SharedPreferences获得edi对象
如:SharedPreferences.Editor edit = sharedPreferences.edit();
③、使用SharedPreferences.Editor的接口的remove方法删除key-value
如:edit.remove("name"); 或 edit.clear(); 清空
④、使用SharedPreferences.Editor接口的commit方法保存key-value对象,生成XML文件
如:edit.commit();
读取步骤:①、使用getSharedPreferences获得SharedPreferences对象 (参1为自定义(已有))
如:SharedPreferences sharedPreferences = getSharedPreferences("can", MODE_PRIVATE);
②、使用SharedPreferences.getString获得edi对应的对象 (第一项为自定义的名带判称,第二项随类型变化而变化,同类可任意填,)
如:String name = sharedPreferences.getString("name","");
SharedPreferences究竟把数据保存到了哪里?
做Android开发经常会用到SharedPreferences,SharedPreferences是保存数据的,那么它究竟把数据保存到了哪里呢?下面我们就一起探讨一下。
在网上搜索了一通,发现说是把数据存放到了
然后,我就用真机连接上电脑,发现,真机是查看不到/data/data目录的,除非手机先root掉,才可以查看。
于是,想启动一个模拟器,模拟器确实可以查看到这个目录。
然后在这里,真机也能通过AndroidStudio查看到这个目录。
先通脊或过真机与AndroidStudio进行连接(我用的是华为荣耀20i):
连接之后,这个AndroidStudio的右下昌野掘角,打开“Device File Explore”,就耐核能找到/data/data这个目录:
然后在data/data这个目录下找到你项目的包名对应的文件夹,打开之后,就能看到里面有一个shared_prefs的文件夹:
可以看到,我们在项目中通过SharePreferences存储的信息,是一个以map/map标签包裹着的。
经过以上追踪,我们可以知道,SharedPreferences实际上是把信息存储到本地磁盘的/data/data/package name/shared_prefs 目录下了,实际上是一个xml文件。这个xml文件是以map/map标签包裹着的。
sharedpreference存储数据的权限有哪些
无论checkbox的状态是什么,我们都需要将其状态记录下来。如何记录呢?卖知中我们可以使用SharedPreferences保存该状态。具体代码如下:
首先中山:定义一个preference的变量sp,并赋值如下:
sp=this.getSharedPreferences("config",MODE_PRIVATE);
getSharedPreferences方法的第一个参数是该新建SharedPreferences保存文件的名称,第二个参数是该保存文件的权限(MODE_PRIVATE即为私有文件)。
其次:将checkbox当前的状态写入SharedPreferences中,即写数据到SharedPreferences中,具体实现如例1-5所示:
例1-5
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Editor ed=sp.edit();
ed.putBoolean("isChecked", isChecked);
ed.commit();//提交数据,
}
复制代码
Editor 是编辑器,用来编辑SharedPreferences文件,在编辑完成之后一定要调用Editor 的commit()方法,该方法是提交数据(类似猛顷于数据库操作中的事物提交),只有调用了该方法才能将数据写入SharedPreferences文件中。
最后,读取SharedPreferences存储的数据
SharedPreferences存储了checkbox的状态,所以每次打开程序时都应该先读取SharedPreferences中的数据信息,根据此值来设置checkbox的显示状态。具体操作如例1-6所示:
例1-6
sp=this.getSharedPreferences("config", MODE_PRIVATE);
Boolean isChecked = sp.getBoolean("isChecked", false);
cb.setChecked(isChecked);
复制代码
调用sharedpreference的getBoolean()方法来读取存储在SharedPreferences中的布尔值,第一个参数是key值,该值要与我们在保存状态信息的key值一致,第二个参数是默认情况下该值。
C
Flutter知识点:数据存储之SharedPreferences
SharedPreferences轻量级存储类,以键值对的形式保存设置,属性和数据。隐卜
在Flutter平台我袭携春们使用shared_preferences库来同时支持拍耐Android 和iOS。
1.首选需要在pubspec.yaml 导入库
2.dart类中导入库
3.支持类型
4.增删改查
举例:
如何在android中利用shared preferences存储和读取数据
1、任务目标
(1)掌握Android中SharedPreferences的使用方法。
2、任务陈述
(1)运行后,显悉唯示如下界面,可以写入和读取SharedPreferences中的数据:
3、任务实施及所涉及知识技能讲解
第一步:新建一个Android工程,命名为SharedPreferencesWrite。
第二步:在layout下添加一个使用线性布局的布局文件,命名为:main.xml。
布局文件源代码:
第三步:在CopySharedPreferencesTest.java下声明如下变量,并导入导入相关包(如何使用SharedPreferences存储和读取数据):
[java] view plain copy
SharedPreferences preferences;
Editor editor;
第四步:在onCreate方法中修改如下代码:
[java] view plain copy
setContentView(R.layout.main);
第五步:在onCreate方法中实例化前面声明的两个对象,代码如下:
[java] view plain copy
preferences = getSharedPreferences("薯含crazyit", MODE_WORLD_READABLE);
editor = preferences.edit();
第六步:在onCreate方法中获取两个按钮,代码如下:
[java] view plain copy
Button read = (Button) findViewById(R.id.read);
Button write = (Button) findViewById(R.id.write);
第七步:在onCreate方法中为两个按钮添加监听器,代码如下:
[java] view plain copy
write.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 "
+ "hh:mm:ss");
// 存入当前时间
editor.putString("time", sdf.format(new Date()));
// 存入一个随机数
editor.putInt("random", (int) (Math.random() * 100));
// 提交所有存入的数据
editor.commit();
}
});
read.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
//读取字符串数睁手培据
String time = preferences.getString("time", null);
//读取int类型的数据
int randNum = preferences.getInt("random", 0);
String result = time == null ? "您暂时还未写入数据": "写入时间为:" + time + "\n上次生成的随机数为:" + randNum;
//使用Toast提示信息
Toast.makeText(SharedPreferencesTest.this ,
result , 5000).show();
}
});
第七步:点击运行程序,程序源代码如下:
课堂练习:创建一个记录应用程序使用次数的程序,当用户第一次启动应用程序时,系统创建SharedPrefererences,来记录使用次数。用户以后启动应用程序时,系统先读取SharedPrefererences中记录的使用次数,然后将使用次数加1。
程序源代码如下:
关于sharedpreferences存储数据和sharedpreference可以存储什么数据类型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。