当前位置: 首页 > news >正文

Android的本地数据

何为本地,即写完之后除非手动修改,否像嘎了一样在那固定死了

有些需求可能也会要求我们去写死数据,因为这需求是一成不变的,那么你通常会用什么方法写死呢?

1. 本地存储-SharedPreferences

此方法可以长时间保存于手机内存中,除非手动清除(更换存储数据或者手机应用管理清除数据)或者卸载应用
常用的是存储基本数据类型,这里给存储数据类以及集合的方法,原理很简单,将数据类和集合转成String类型存起来,获取时对应的解析即可

    implementation 'com.google.code.gson:gson:2.6.2'implementation 'com.alibaba:fastjson:1.1.57.android'
    //存储数据类//用法 commitObject(key,要存的数据类)fun commitObject(key: String, source: Any) {val editor = editor.putString(key, JsonUtil.serializeAsString(source))commit(editor)}//获取数据类//用法 getObject<存起来的数据类>(key,存起来的数据类)fun <T> getObject(key: String, klass: Type): T? {val string: String = getString(key, "")if (string == "" || string == "\"\"") return nullreturn if (string == "") {null} else {JsonUtil.deserializeAsObject(string, klass)}}//存储集合数据//用法 commitDataList(key,集合)fun <T> commitDataList(key: String,dataList: List<T>?) {if (null == dataList || dataList.size < 0) {return}val gson = Gson()val strJson = gson.toJson(dataList)val editor = sharePreferences.edit()editor.putString(key, strJson)editor.commit()}//获取集合数据//用法 getDataList(key, 集合的类型)fun <T> getDataList(key: String,cls: Class<T>?): MutableList<T> {val dataList: MutableList<T> = ArrayList()val strJson = sharePreferences.getString(key, null) ?: return dataListval gson = Gson()val myList = JsonParser().parse(strJson).asJsonArrayfor (jsonElement in myList) {dataList.add(gson.fromJson(jsonElement, cls))}return dataList}

2. 常量

经典的比如Arouter 的类前注解,统一存放在一个类里面供外部使用

在这里插入图片描述

3. 集合

有些时候我们不需要去动态获取数据,只需要在app启动的时候去获取一次,那么我们就可以定义一个全局集合,将数据一开始赋值之后,供app活动期间使用,除非长期不变建议存储在-SharedPreferences,其余还是存在变量里比较好些

4. 根据规定好的字段数据,我们直接在代码里面写死,这里的数据基本的都是以集合的形式,如果其他的建议还是常量就好了

这里的集合不像3中的从服务端获取,可是我们直接手撕的~

4-1 创建一个集合,我们每次new一个数据类,然后去add

少了还行,五条以上就不建议了,首先是不美观,其他是代码量也比较大

在这里插入图片描述

4-2 模仿获取的服务端数据,自导自演,去解析~ 适合大量数据

在这里插入图片描述
在这里插入图片描述

 implementation 'com.alibaba:fastjson:1.1.57.android'
    /*** json 转 List<T>*/public static <T> List<T> jsonToList(String jsonString, Class<T> clazz) {@SuppressWarnings("unchecked")List<T> ts = (List<T>) JSONArray.parseArray(jsonString, clazz);return ts;}
http://www.lryc.cn/news/162125.html

相关文章:

  • android NDK 开发包,网盘下载,不限速
  • 【每日一题Day320】LC2651计算列车到站时间 | 数学
  • C语言柔性数组详解:让你的程序更灵活
  • Redis-带你深入学习数据类型list
  • react拖拽依赖库react-dnd
  • win10环境安装使用docker-maxwell
  • Docker部署RabbitMQ
  • 23个react常见问题
  • 【python基础】——Anaconda下包更新的坑及安装与卸载、及安装后Jupyter Notebook没反应的解决方法
  • CSS 中的 display 和 visibility
  • 解决mysql报错this is incompatible with DISTINCT
  • C++-map和set
  • 微信小程序AI类目-深度合成-AI问答/AI绘画 互联网信息服务算法备案审核通过教程
  • 蓝桥杯官网练习题(星期一)
  • centos7更新podman
  • Java特性之设计模式【抽象工厂模式】
  • 机器学习简介
  • linux之perf(2)list事件
  • 将多个EXCEL 合并一个EXCEL多个sheet
  • 【送书活动】揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例
  • 微信小程序——数据绑定
  • libbpf-bootstrap安卓aarch64适配交叉编译
  • 【剑指Offer】24.反转链表
  • 04-docker compose容器编排
  • 通过位运算打多个标记
  • [学习笔记]Node2Vec图神经网络论文精读
  • C# Linq源码分析之Take(五)
  • 性能监控-grafana+prometheus+node_exporter
  • (STM32H5系列)STM32H573RIT6、STM32H573RIV6、STM32H573ZIT6嵌入式微控制器基于Cortex®-M33内核
  • mysql配置bind-address不生效