首页
学习
活动
专区
圈层
工具
发布

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

正文   DataStore是Jetpack中的一个组件,用于做数据持久化,DataStore以异步、一致的事务方式存储数据,克服了SharedPreferences的一些缺点,DataStore基于Kotlin...一、添加依赖 在app模块下的build.gradle中的dependencies{}闭包中添加如下依赖: //DataStore implementation 'androidx.datastore...android:text="取数据" /> LinearLayout> 里面就是两个按钮一个文本,回到MainActivity中,首先完成点击事件的监听。...在DataStore中操作数据会麻烦一些,Key需要我们去定义,例如我定义一个String类型的key。...*/ option java_package = "com.llw.datastore";//设置生成的类所在的包 option java_multiple_files = true;//可能会有多个文件

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

    Jetpack:DataStore必知的几个优点

    上面的sp问题不知道你在使用的过程中是否有遇到过,或者说有幸中标几条,大家可以留言来对比一下,说出你的故事(此处应该有酒)。 DataStore 针对sp那几个问题,DataStore都够能规避。...ds使用Flow来获取数据,每次保存数据之后都会通知最近的Flow。 ds完美支持sp数据的迁移,你可以无成本过渡到ds。 所以ds将会是Android后续轻量数据存储的首选组件。...我们也是时候来了解ds的使用。 引入DataStore 首先我们要引入ds,方式很简单直接在build中添加依赖即可。..., "settings_preference"))) 通过创建SharedPreferencesMigration来迁移对应的sp数据。...目前可以看到DataStore还处在alpha版本,非常期待它之后的正式版本。 另外,针对DataStore的使用,我写了一个demo,大家可以在android-api-analysis中获取。

    1.4K10

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

    为此Android官方推出了数据仓库DataStore,并将其作为Jetpack库的基础组件。...由于DataStore并未集成到SDK中,而是作为第三方框架提供,因此首先要修改模块的build.gradle文件,往dependencies节点添加下面两行配置,表示导入指定版本的DataStore库...,下面的代码模板演示了如何从数据仓库中读取字符串值: // 获取指定名称的字符串值 public String getStringValue(String key) { Preferences.Key...往数据仓库保存数据的代码示例如下: // 从数据仓库中读取信息 private void readDatastore() { DatastoreUtil datastore = DatastoreUtil.getInstance...然后打开记录获取界面,看到记录获取结果如下图所示,说明成功实现了数据仓库的读写功能。 点此查看Android开发笔记的完整目录

    1.2K10

    Android Jetpack 更新一览

    DataStore DataStore 提供了稳健的数据存储解决方案,解决了 SharedPreferences 的缺陷,同时让 API 接口保持简单且高度可用。...DataStore 允许您通过 Preference DataStore 存储键值对,或者通过 Proto DataStore 存储 protobuff 格式的类型对象。...在 Android S 中,AppSearch 还将提供 PlatformStorage,使得您可以与其他应用安全地共享您的应用里的数据,而且因为无需链接额外的原生库,您的应用的二进制尺寸也将更小。...△ Android S+ 上的集中存储,用于整合到全设备搜索中 Room Room 是我们推荐大家采用的数据持久层,在平台上提供更多的可用性和安全性。...您可以远程使用该库来跟踪持续集成测试中的指标,或在本地配合 Android Studio 中的剖析结果来使用。请 观看 Google I/O 演讲 进一步了解相关细节。

    2K20

    Java设计模式在Android中的实践

    而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。需要注意以下几点: (1)子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。...(2)尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法。 (3)子类不应该覆盖父类的非抽象方法(可以重载,但一定要调父类的方法)。...依赖倒转原则 在实现依赖倒转原则时,我们需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其他对象中,依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。...接口隔离原则 (1)在使用接口隔离原则时,我们需要注意控制接口的粒度。 (2)接口不能太小。如果太小会导致系统中接口泛滥,不利于维护; (3)接口也不能太大。...Java设计模式详解 Java设计模式之创建型模式 Java设计模式之结构型模式 Java设计模式之行为型模式 项目源码 项目源码地址:https://github.com/xuexiangjys/architect-java

    1.4K30

    Android中Java和JavaScript交互

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。...) 此例中我们使用的是control作为注入接口名称。...Android在4.4之前并没有提供直接调用js函数并获取值的方法,所以在此之前,常用的思路是 java调用js方法,js方法执行完毕,再次调用java代码将值返回。...(number1 + number2) } 3.Java在回调方法中获取js函数返回值 lineos:false 1 2 3 4 @JavascriptInterface public void onSumResult...如打印日志可验证 lineos:false 1 ThreadInfo=Thread[WebViewCoreThread,5,main] 解决上述的异常,将webview操作放在主线程中即可。

    1.2K20

    Jetpack组件之DataStore

    疫情距离我最近的一次,隔离的第10天,居家办公的第8天,希望疫情早点过去,结束隔离✊。 首语 数据持久化指将哪些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,数据依然不会丢失。...Android系统中主要提供了三种方式来实现数据持久化功能。即文件存储、SharedPreferences存储及数据库存储。...不使用预定义的架构,因此您必须使用相应的键类型函数为需要存储在 DataStore 实例中的每个值定义一个键。..."; //可以生成单独的.java每个生成的类的文件 option java_multiple_files = true; message Settings { int32 count = 1;...使用由 dataStore 创建的属性委托来创建 DataStore 的实例,其中 T 是在 proto 文件中定义的类型。

    1.6K10

    监听者模式 - 在Java与Android中的使用

    在某些数据变化时,其他的类做出一些响应。处理数据(或者分发事件)的类主动投送消息,感兴趣的类主动“订阅”消息。 监听者模式在Android中有大量的运用,相信大家都不会感到陌生。...在Android开发中,Button控件的点击事件就是监听者模式最常见的例子。 当Button被点击,执行了 OnClickListener.onClick。...Activity中给这个Button设置了自己实现的OnClickListener,并复写了onClick方法,就能执行自定义操作了。 Java代码实例 下面来用Java来实现监听者模式。...感兴趣的类接收结果。 2个文件:AlgoCalculator.java;MainUser.java AlgoCalculator.java是计算部分,接收数据并进行计算。并将结果传递出去。...Android中使用监听器 最常见的例子是给Button设置点击事件监听器。 类似上个例子,设计一个接口当做监听器。Android中回调时可以利用handler,控制调用的线程。

    2.7K60

    Java多线程-完成Android开发中的某些需求

    子线程中开启一个主线程去获取某些数据,此时子线程要处理等待状态,获取成功之后继续执行子线程中之后的代码....问题:当开启主线程去获取数据的时候,子线程的代码也会顺序去执行,这样并不能等到主线程有结果的时候再去执行子线程中的代码....分析:先来分析一下,当在线程A中开启另外一个线程B的时候,线程A中的代码还是顺序执行线程B的代码也会执行.这样的话线程A中需要线程B中返回参数的方法就没办法正确执行....com.example.wang.threaddemo E/CHAO: run 2WangChao com.example.wang.threaddemo E/CHAO: run 3WangChao 二 涉及的Java...注意: wait()方法要使用在synchronized修饰的方法里面要不然会报异常,并且是synchronized()加锁的那个对象调用该方法.异常如下: java.lang.IllegalMonitorStateException

    37510

    strictmode android,Android中的StrictMode

    StrictMode.ThreadPolicy public static final class StrictMode.ThreadPolicy extends Object java.lang.Object...↳ android.os.StrictMode.ThreadPolicy 介绍 StrictMode是Android2.3(API9)中引入的一个工具类,继承自Object,它可以检测代码中的一些不规范问题...中过滤自己的信息,严格模式会上报多种类型的问题,所以我们直接通过筛选StrictMode关键信息; image.png 根据信息提示,我们可以发现一些代码不规范的问题,日志中的~duration=20ms...: class xxxxxxxxxActivity; instances=2; limit=1 at android.os.StrictMode.setClassInstanceLimit(StrictMode.java...:1) 只是能看出某一个类发生的内存泄漏,但是并不能找出具体信息,所以,这点严格模式还是满足不了问题排查的;我们可以通过Leaks或者MAT等工具进一步排查; 其实Android手机的开发者模式中,也有严格模式选项

    86220
    领券