sharedpreferences存储数据(sharedpreference可以存储什么数据类型)

本篇文章给大家谈谈sharedpreferences存储数据,以及sharedpreference可以存储什么数据类型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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可以存储什么数据类型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表