android数据存储方式

五种:SharedPreferences ;文件;SQLite数据库;ContentProvider;网络存储数据

1:SharedPreferences

Android平台上一个轻量级的存储类

可以保存基本类型;

本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息;

其存储位置在/data/data/<名>/shared_prefs目录下;

整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少;

SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现;

与SQLite数据库相比,优点:免去了创建数据库,创建表,写SQL语句等诸多操作,更加方便,简洁。缺点,只存储boolean,int,float,long和String五种简单的数据类型,不论如何简单,它也只能是存储方式的一种补充,无法完全替代如SQLite数据库这样的其他数据存储方式。

使用 SharedPreferences 保存数据,其背后是用 xml 文件存放数据,文件存放在 /data/data/<package name>/shared_prefs 目录下:
SharedPreferences sharedPreferences = getSharedPreferences("zyj", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();// 获取编辑器
editor.putString("name", " 老李 ");
editor.putInt("age", 4);
editor.commit();// 提交修改
生成的 zyj.xml 文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name"> 老李 </string>
<int name="age" value="4" />
</map>
访问SharedPreferences中的数据代码如下:
SharedPreferences sharedPreferences = getSharedPreferences("zyj", Context.MODE_PRIVATE);
//getString() 第二个参数为缺省值,如果 preference 中不存在该 key ,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);

因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。

 

2:文件存储

文件可用来存放大量数据,如文本、图片、音频等;

默认位置:/data/data/<包>/files/;

openFileOutput()方法可以用于把数据输出到文件中;

openFileOutput()方法的第二参数用于指定操作模式,有四种模式:

 Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容;

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入;

android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。

/**
  * 保存内容,注:允许其他应用对该文件读和写
  * @param filename 文件名称
  * @param content 文件内容
  * @throws Exception
  */
 public void saveRW(String filename, String content) throws Exception{
  FileOutputStream outStream = context.openFileOutput(filename,
    Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);
  outStream.write(content.getBytes());
  outStream.close();
 }
 /**
  * 读取文件内容
  * @param filename 文件名称
  * @return
  * @throws Exception
  */
 public String readFile(String filename) throws Exception{
  FileInputStream inStream = context.openFileInput(filename);
  byte[] buffer = new byte[1024];
  int len = 0;
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  while( (len = inStream.read(buffer))!= -1){
   outStream.write(buffer, 0, len);
  }
  byte[] data = outStream.toByteArray();//得到文件的二进制数据
  outStream.close();
  inStream.close();
  return new String(data);
 }

 

3:SQLite

是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能,此外它还是开源的,任何人都可以使用它;

数据库存储在 data/< 项目文件夹 >/databases/ 下;

 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库;

在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据;

Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库;SQLiteOpenHelper 的子类,至少需要实现三个方法:构造函数;onCreate();onUpgrage(),它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。

特点:面向资源有限的设备;没有服务器进程;所有数据存放在同一文件中跨平台;可自由复制;SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.);Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值