首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Jetpack组件 DataStore的使用和简单封装

插件安装 ① 添加协议缓冲区插件 ② 添加协议缓冲区和 Proto DataStore 依赖项 ③ 配置协议缓冲区 2. 创建proto文件 3. 配置proto文件 4. 创建序列化器 5....一、添加依赖 在app模块下的build.gradle中的dependencies{}闭包中添加如下依赖: //DataStore implementation 'androidx.datastore...五、对象存取   其实我们刚才使用的是Preferences DataStore,是对数据进行操作,下面要操作的是Proto DataStore,官网上的说法是Proto DataStore 将数据作为自定义数据类型的实例进行存储...插件安装 这个插件的安装比较的麻烦,首先是添加协议缓冲区插件 ① 添加协议缓冲区插件 首先打开工程的build.gradle,在里面添加如下代码: id "com.google.protobuf" version..."0.8.12" apply false 再打开app下的build.gradle,添加如下代码: id 'com.google.protobuf' ② 添加协议缓冲区和 Proto DataStore

3.9K20

全网最细解析DataStore,SharedPreferences终结者

/   DataStore介绍   / Jetpack DataStore 是一种改进的新数据存储解决方案,允许使用协议缓冲区存储键值对或类型化对象。...DataStore 以异步、一致的事务方式存储数据,克服了 SharedPreferences(以下统称为SP)的一些缺点。...然而google对SP的定义为轻量级存储,如果存储的数据少,使用起来没有任何问题,当需要存储数据比较多时,SP可能会导致以下问题: 1....Protobuf协议缓冲区是一种对结构化数据进行序列化的机制。通过使用协议,Proto DataStore 可以知道存储的类型,无需使用键便能提供类型。...添加依赖项 1、添加协议缓冲区插件及 Proto DataStore 依赖项为了使用Proto DataStore,让协议缓冲区为我们的架构生成代码,需要在build.gradle 中引入protobuf

2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Jetpack组件之DataStore

    即文件存储、SharedPreferences存储及数据库存储。其中SharedPreferences是使用键值对的方式来存储轻量型数据,使用比较简单,且程序卸载后也会一并清除,不会残留数据。...Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。...Proto DataStore 将数据作为自定义数据类型的实例序列化存储在磁盘。此实现要求您使用协议缓冲区(Protocol Buffers)来定义架构,但可以确保类型安全。...在app的build.gradle中添加如下代码。...通过 generatedFilesBaseDir 改变生成位置 generatedFilesBaseDir = "$projectDir/src/main" } 设置proto文件位置。

    1.2K10

    针对数据存储区的攻击测试

    关于数据库的学习,学完数据库基础之后,可以先去看看推荐的第二本书关于数据库安全防护的,不用都看,选择一个你最想去学习和最熟悉的数据库,有了这个基础,再去扩展其他的技术也会比较简单,可以在实际的工作中有需求的时候前去扩展...打卡二:web 实战 408-456 利用 sql 注入漏洞除了能获取数据之外,还有对数据库进行破坏,比如使用 drop 删除数据库,使用 shutdown 命令关机,在进行数据获取时,最简单的是使用...除了执行 sql 语句,根据数据库提供的能力还可以执行系统命令,比如 mssql 的 xp-cmdshell 这个存储过程、mysql 的 udf 提权;数据库还可以读取文件的内容,比如 mysql 的...总的来说,检测注入漏洞是相对比较容易的,但是你能通过 sql 注入漏洞拿到什么样的权限和数据,取决于你对于不同数据库的理解以及熟练程度,这块的技术瓶颈不在于对 web 应用程序的理解而在于数据库,所以在学习这部分内容之前首先需要的是数据库的基础...,学会怎么使用数据库,不同数据库有哪些特性和自带功能,希望大家可以去成长平台把数据库相关的任务完成,然后再来深入研究这部分关于注入的内容。

    71510

    Android Jetpack架构组件(一)与AndroidX

    ViewModel:以生命周期感知的方式存储和管理与UI相关的数据。 WorkManager:管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。...存储区是唯一依赖于其他多个类的类,在本例中存储区依赖于持久性数据模型和远程后端数据源。并且,这些架构组件既可以配合使用,也可以单独使用,可以根据需要合理选择。...安全:安全的读写加密文件和共享偏好设置。 测试:用于单元和运行时界面测试的Android 测试框架。 TV: 构建可让用户在大屏幕上体验沉浸式内容的应用。 Wear OS:开发Wear应用的组件。...Preferences(偏好设置):提供了能够改变应用的功能和行为能力。 Sharing(共享):提供适合应用操作栏的共享操作。 Slices(切片):创建可在应用外部显示应用数据的灵活界面元素。...Android项目的app的build.gradle文件,发现一些第三方库也被AndroidX的库所替换。

    2.1K00

    gitlab 存储仓库目录设置及数据迁移

    注:一开始没有考虑到把gitlab划分好存储目录,占用系统磁盘,由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足 磁盘空间: [root@gitlab ~]# df...设置存储仓库数据 默认情况下omnibus-gitlab 将仓库数据存储在 /var/opt/gitlab/git-data目录下,仓库存放在子目录 repositories里面。...使设置生效 1.1 ,在没有数据的情况下 [root@gitlab ~]# gitlab-ctl stop [root@gitlab ~]# gitlab-ctl reconfigure //使修改生效...[root@gitlab ~]# gitlab-ctl start 设置存储仓库数据的备用目录 注意的是:自GitLab 8.10开始,可以通过在/etc/gitlab/gitlab.rb文件中添加下面的几行配置..., 来增加多个 git 数据存储目录。

    2.1K10

    干货 | 携程Android 10适配踩坑指南

    1.3 适配步骤 1.3.1 环境准备 AndroidStudio 3.2.0+ gradle:gradle-4.6+ 另外修改相关app、library模块中build.gradle的compileSdkVersion...如果取值为 false ,表示不迁移依赖包到AndroidX,但在使用依赖包中的内容时可能会出现问题,如果你的项目中没有使用任何三方依赖,此项可以设置为 false。...: 应用私有目录:存储应用私有数据,外部存储应用私有目录对应Android/data/packagename,内部存储应用私有目录对应data/data/packagename; 共享目录:存储其他应用可访问文件...,可以临时以兼容模式运行, 兼容模式下应用申请存储权限,即可拥有外部存储完整目录访问权限,通过Android10之前文件访问方式运行,以下两种方法设置应用以兼容模式运行。...Adaptation Guide https://chinesefoodstudio.com/index.php/2019/11/21/android-q-adaptation-guide/ 5、Android 10分区存储介绍及百度

    3.3K77

    Android开发笔记(一百七十八)更安全的数据仓库DataStore

    比如共享参数保存的数据较多时,初始化共享参数会把整个文件加载进内存,加载耗时可能导致主线程堵塞。又如调用apply方法保存数据时,频繁apply容易导致线程等待超时。...DataStore提供了两种实现方式,分别是Preferences DataStore 和Proto DataStore,前者采用键值对存储数据,后者采用自定义类型存储数据,其中Preferences...由于DataStore并未集成到SDK中,而是作为第三方框架提供,因此首先要修改模块的build.gradle文件,往dependencies节点添加下面两行配置,表示导入指定版本的DataStore库...: implementation "androidx.datastore:datastore-preferences:1.0.0" implementation "androidx.datastore:...: // 设置指定名称的字符串值 public void setStringValue(String key, String value) { Preferences.Key keyId

    1K10

    FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频

    2、Gradle版本不低于8.6。3、App模块的build.gradle里面compileSdk和targetSdk要升级到34或者更高版本。...一、修改模块的build.gradle在build.gradle的dependencies节点内部补充下面的导包语句,把ExoPlayer用到的相关库都加进来。...-- use_controller是否显示控制栏,show_timeout控制栏的消失间隔,show_buffering是否显示缓冲区,resize_mode大小调整模式 -->androidx.media3...的处理代码首先补充下面一行代码声明PlayerView对象:private ExoPlayer mPlayer; // 声明一个新型播放器对象接着在onCreate方法里面补充以下代码,获取PlayerView对象,并对其设置...factory)                .createMediaSource(videoItem);    }    mPlayer.setMediaSource(videoSource); // 设置播放器的媒体来源

    45010

    InfluxDB 设置数据保留策略,验证保留的数据存储大小

    需求 在使用Telegraf+InfluxDB+Grafana监控服务器资源的时候,如果influxdb中的数据不设置超时过期的机制的话,那么数据就会默认一直保存。...这样一直保存的话,数据量就会导致偏大。 这时候就要适当调整influxdb的数据存储时长,保留最近一段时间的数据即可。...因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据, 节省数据存储空间,避免数据冗余的情况。...replicaN 副本个数:1 代表只有一个副本 default 是否默认策略:true 代表设置为该数据库的默认策略 2.2 新建数据保留策略 # 新建一个策略 CREATE RETENTION POLICY...验证变更策略之后,存储数据是否会变少 默认的telegraf数据库的存储策略是一直保存数据,并无限制。那么为了节省数据存储,我下面创建一个保留1小时的策略,然后删除默认的策略,观察存储数据是否变少。

    11.9K41

    【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 )

    一、Protobuf 源码分析 二、创建 Protobuf 对象 三、完整代码示例 四、参考资料 一、Protobuf 源码分析 ---- Protobuf 源文件如下 : addressbook.proto...: // 指定 Protocol Buffers 语法版本 syntax = "proto2"; package tutorial; option java_multiple_files = true...= 1; // 字段值是枚举类型, 默认是 HOME 类型 optional PhoneType type = 2 [default = HOME]; } // 表示重复的数据...插件简介 | Android Studio 中配置插件 | AS 中编译源文件 ) 中 , 使用了 Gradle 插件 , 自动将 Android Studio 工程中的 Protobuf 编译成了...这个拼装后最大的构造器的 build 方法 , 创建 AddressBook 对象 ; 三、完整代码示例 ---- 完整代码示例 : package kim.hsl.protobuf import androidx.appcompat.app.AppCompatActivity

    81550

    【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )

    文章目录 一、Gradle 构建脚本结构 二、Gradle 脚本中定义闭包 三、Gradle 脚本中变量的定义与使用 四、dependencies 依赖设置 五、设置 android 脚本块 1、设置编译版本和编译工具版本...2、设置 defaultConfig 3、本章节完整脚本 六、应用设置和依赖库设置 1、应用设置 2、依赖库设置 3、执行配置 七、Gradle 核心构建脚本完整配置代码 在上一篇博客 【Android...Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 ) 最后提到了 在 Gradle 构建脚本中 , 需要实现...---- 首先 , 定义依赖库集合 , 这里 使用 map 集合 存储 依赖库 , 键 为 依赖库名称 , 值 为 依赖库的完整路径 ( 依赖库组名:依赖库名称:依赖库版本号 ) ; 这是 implementation...插件】组件化中的 Gradle 构建脚本实现 ③ ( 在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 ) 博客最终配置 ; 完整设置脚本 : /**

    1.4K21

    【Flutter】Flutter 拍照示例 ( Android 应用兼容 Android X | Gradle 版本号 | Gradle 插件版本号 | Android X 支持 | SDK 版本 )

    文章目录 一、Gradle 及 Gradle 插件版本 二、支持 AndroidX 配置 三、设置 Android 编译目标版本 四、相关依赖库修改 Flutter 插件 " image_picker..." 需要调用 AndroidX 中的相机相关 API , 在 Android 应用中需要添加 AndroidX 相关依赖 ; Flutter 官方文档 : AndroidX Migration 一、Gradle...及 Gradle 插件版本 ---- 确保使用的 Gradle 版本是 4.10.2 以上的版本 , Gradle 插件版本是 3.3.0 以上的 , 这两个版本号有一定的对应关系 , 不能随意设置...; Gradle 版本号设置 : Flutter 源码根目录/android/gradle/wrapper/gradle-wrapper.properties 配置文件中设置 Gradle 版本号 ;...Settings " 选项 ; 在弹出的对话框中的 Project 选项卡下设置 Gradle 和 Gradle 插件版本号 , Gradle 版本号大于等于 4.10.2 Gradle 插件版本号大于等于

    92110

    AndroidX库和一般库的详细对比以及迁移中遇到的坑总结

    本文同步发布在Github:Android Studio版本、Gradle版本、Build Tools版本、AndroidX对照详细解答 一、AndroidX库和一般库的详细对比 官方有好几个文件提出了如何迁移到...AndroidX库,具体如下: AndroidX概览: https://developer.android.google.cn/jetpack/androidx AndroidX和旧的依赖库对照表: https...里面设置的gradle版本号设置成4.10.2,即:distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip...Android Studio版本是3.1.3,,gradle-wrapper.properties里面设置的gradle版本号是distributionUrl=https\://services.gradle.org...我把根目录的build.gradle设置成classpath 'com.android.tools.build:gradle:3.3.1',然后重新编译一下,就OK了。

    2.3K31

    【Jetpack】DataBinding 架构组件 ( 数据绑定技术简介 | Android 中的 DataBinding 数据绑定 | 启动数据绑定 | 定义数据类 | 布局文件转换 )

    文章目录 一、数据绑定技术简介 二、Android 中的 DataBinding 数据绑定技术 三、Android 中的 DataBinding 代码示例 1、build.gradle 构建脚本 -...启动数据绑定 2、定义数据类 3、布局文件转换 4、Activity 组件设置数据绑定布局和数据 5、显示效果 一、数据绑定技术简介 ---- 数据绑定 是 通用的编程技术 , 主要作用是 关联 应用的...中开发代码进行设置 ; 三、Android 中的 DataBinding 代码示例 ---- 1、build.gradle 构建脚本 - 启动数据绑定 在 Module 内的 build.gradle...'androidx.test.espresso:espresso-core:3.4.0' } 在 build.gradle 构建脚本 中 , 设置 dataBinding { enabled = true..., 通过 DataBinding 设置到 布局文件中 ; 3、布局文件转换 在 build.gradle 构建脚本中 , 设置 dataBinding { enabled = true } 后 ,

    1.6K20

    【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

    使用 传统的方式 , 在 Fragment 之间 传递 数据 , 类型很不安全 , 设置 传递的数据时 , 需要设置 放入的 数据类型 , 如下代码所示 : // 正常方式传递参数 var args:..."AGE", 18) } 上面的代码中 , 向 Bundle 中设置了如下两个数据 : 设置了 String 类型的数据 , 名称是 “NAME” 字符串常量 , 值为 字符串 “Tom” , 设置了...Int 类型的数据 , 名称是 “AGE” 字符串常量 , 值为 整型 18 ; 这里要注意 , 设置的时候 , 设置的 NAME 属性值是 String 类型的 , 那么在 FragmentB 中获取的...也不会报错 , 这就导致了 数据传递 不安全 的问题 , 如果出现问题 , 导致错误很难排查 ; 二、页面跳转间的传统的数据传递方式 ---- 1、导入插件依赖 安全参数传递需要使用到 androidx.navigation...:navigation-safe-args-gradle-plugin:2.3.0-alpha06 中的 androidx.navigation.safeargs 插件 ; 由于在最新版的 Gradle

    56020
    领券