问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android中五中存储方式的区别和优劣性

发布网友 发布时间:2022-04-25 21:41

我来回答

1个回答

热心网友 时间:2022-05-05 11:10

数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种主要方式,分别是:
1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
5 网络存储数据
第一种: 使用SharedPreferences存储数据
适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等
核心原理:它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/< >/shared_prefs目录下。
SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中K值name表示要操作的xml文件名,第二个参数键值具体如下:
实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写
SharedPreferences与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

第二种: 文件存储数据
关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
文件可用来存放大量数据,如文本、图片、音频等。
默认位置:/data/data/< >/files/***.***。

可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。
写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。
读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的JavaFileInputStream对象。
第三种:SQLite存储数据
SQLite Database数据库。Android对数据库的支持很好,它本身集成了SQLite数据库,每个应用都可以方便的使用它,或者更确切的说,Android完全依赖于SQLite数据库,它所有的系统数据和用到的结构化数据都存储在数据库中。 SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。

SQLite它具有以下优点:
1..效率出众
2. 十分适合存储结构化数据
3. 方便在不同的Activity,甚至不同的应用之间传递数据。 
4.面向资源有限的设备

5.没有服务器进程,

6.所有数据存放在同一文件中跨平台,

7.可自由复制。

数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
第四种:ContentProvider
Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。

第五种:网络存储

网络一般用于需要实时传输数据,由于移动产生流量需要资费,并且现在中国*地区的网络速度不尽人意,所以通过网络发送数据时需要注意数据量,如非必要,也不要使用网络发送。但是如果有些数据在移动端不能处理或者处理比较麻烦时,可以考虑通过网络发送到服务器处理。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大数据具体是干什么的 大数据是做什么工作的 一只白羊(DD)与另一只白羊(Dd)交配,生下的羊基因组成是?该羊与一只黑... 一对白羊生了1只白羊,3只黑羊,有关基因用D和d表示,下列说法正确的是... ch美-瓷(一半接近历史) 麻花是不昰上火 吃麻花会上火吗 麻花不能和什么一起吃 吃完酸菜鱼很腥 苏州市区有那些名山呢— 苏州十大山景点介绍 数据存储的原理是什么 类对象的存储机制 米哈游的米游社被永久封号,还可以申诉解封吗如果可以,那申诉该说什么? 快手作品侵权永久封号能申诉吗第二次封多久 抖音账号永久封禁怎么办?申诉无效还能不能解封 抖音封号永久申诉内容怎么写? 被永久封号了如何解开 抖音永久封号是要申诉解封吗? 怎么键盘快速复制 手机防水怎么去弄?需要什么材料或者胶水之类的! 街上手机防水镀膜和膜结手机纳米防护有什么区别? 手机经过纳米防水涂层处理后,真的能防水吗 市面上手机防水是真的吗?和膜结手机纳米防护两者有什么区别? 手机防水镀膜是什么?膜结手机纳米防护和防水镀膜的区别是什么? 智能手机防水采用什么材料和加工工艺? 手机防水密封圈常用什么材质? 防水手机的扬声器是怎样防水的? 手机有没有防水的? 华为手机防水标的材料是什么? 防水手机用什么材料做为密封材料? 联通云的块存储采用的存储机制是? java里equals和hashCode之间什么关系 Session是什么意思? 数据连接池的工作机制是什么? 美工区布局如何做到教育性和艺术性相统一 memcache原理是什么?是否能存入2m的value 如何创设美工区角活动 hibernate中持久太对象不能再次被保存? hibernate中持久太对象不能再次被保存? hashmap的最大容量是多少,在多少的时候会导致查询响应过慢 hashmap的最大容量是多少,在多少的时候会导致查询响应过慢 如何有效投放幼儿园美工区活动材料 幼儿园环境创设的基本要求有哪些 如何合理的进行小班美工区材料投放结题报告 1.美术活动材料的设置与投放是否要遵循幼儿能力水平的发展?以及考虑操作中的安全性?为什么? 幼儿园怎样开展好中班美工区域活动 VBA求解:行数未知,超10000行,想用VBA数组方式给对应的G列赋值,G列赋值 这个vba要怎么写 为什么每次香蕉买回来过一天就黑了?? 为什么香蕉放一两天就会变黑