- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【word】android本地数据存储方案
Android系列的博客主要是记录和总结自己在平时学习之中遇到的问题,方便日后用到时查看,同时也希望对读者有所帮助。不足之处,欢迎指正~
在说到Android数据存储之前,先提一下?数据持久化?,所谓数据持久化就是将内存中的瞬时数据保存下来,在应用开发中是很重要的部分。举个栗子,我们打开一个应用之后输入了用户名和密码,之后回到了桌面,再回到应用时,我们希望之前输入的内容还在,这个要怎么实现呢?可以在回到桌面时将数据保存,返回视图时再填入数据。
其实不止是这些瞬时数据的保存,包括一些和应用相关的数据也是需要保存的,比如用户第一次登陆之后,之后再进入应用不必再次登陆,那么用户的信息就需要保存下来。下面进入正题。
注意:数据持久化应该结合Activity的生命周期使用。
SharedPreferences:用户偏好设置
内部存储,数据存储到手机内置存储器
外部存储,外部SD卡中存储数据
SqlLite本地数据库存储
ContentProvider
其中内部存储和外部存储都属于文件存储,这次主要是介绍SharedPreferences和内部存储。
SharedPreferences使用键值对来存储数据,默认以xml文件形式进行存储,对应的文件保存到手机内存的data/ /xxx(保存数据时建立的文件)目录下面,提供和putString ,putInt ,putBoolean 等方法存储不同类型的数据,使用时很方便。
因为SharedPreferences存储时的数据格式和数据类型限制,它只适用于存储一些简单用户设置,例如用户设置的夜间模式,音量,或者登录信息等。
Android提供了3中方法获取SharedPreferences对象。
参数:getSharedPreferences 需要如下两个参数
String类型:指定文件名(不需要带文件后缀)
int类型:指定文件的操作模式,常用的是MODE_PRIVATE 该文件只允许本应用程序进行读写 ,MODE_APPEND 对文件进行写入操作时,是在文件尾追加内容 ,MODE_MULTI_PROCESS 用于会有多个进程中对同一个 SharedPreferences 文件进行读写的情况 。
参数:只接收一个操作模式参数。
这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。
这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件
以下是代码案例(以保存登录信息为例):
获取SharedPreferences对象
取出数据
取出数据之前要先获得SharedPreferences对象。
文件存储的形式不对文件进行任何格式化处理,存入是什么样,取出来也是什么样,我们可以用它存储一些简单类型的数据或二进制数据,也可以自己定义存储规范,用来存储复杂的文本数据。其实我们可以直接存储json格式的数据在文件中,借助Gson类进行对象和json格式之间的转换,使用很方便。上次我就在应用中用文件缓存了数据,比起SQLLite,有时文件存储要方便一些,因为它不用进行创建数据库,建表等操作。
内部存储:Context提供了很方便的打开文件的方法。可以使用Context类提供的openFileOutput ,和openFileInput 进行文件写入和读取,进行缓存的设置和读取,需要注意的是,这里传入的文件名是带有文件后缀的。
注意:在读写是文件时可以加入读写缓冲,加快读写效率。
以下是文件存储的内部存储的例子(以存储字符串为例):
为了以后使用方便,可以先定义一个文件缓存的工具类。
使用
使用文件缓存工具类时,直接调用它对外提供的函数就可以,将需要数据以字符串形式存,我们可以自定义数据存储格式,比如说以JSON串存储。以上代码中,缓存文件名写到文件缓存的类中,使用的时候可以直接调用。
提示:可以在Activity的onResume 的方法中使用获取缓存的操作(结合Activity来看),在onPause 是使用设置缓存的操作(暂停,跳转到其他Activity时调用这个方法)。
在应用中我们可以根据是否有网络或着缓存是否过期来判断是否从文件中获取缓存数据。以下是判断缓存是否过期的方法。
最后总结一下Context中获取内部存储和外部存储文件路径的方法。这些目录下的文件都会随着应用的卸载而被删除。
context.getFilesDir :获取手机内置存储器的/data/data/ /files目录,这个位置放存储文件。
context.getCacheDir :获取手机内置存储器的/data/data/ /cache目录,这个目录可以存放应用缓存文件。
context.g
您可能关注的文档
- 3、比赛平台使用说明.doc
- 7.mathematica与量子力学.ppt
- 94年全國衛生保健績優志工團隊選拔評選項目及細目.doc
- a095l0000q0000000_1050000072_attach1_23.doc(72704kb).doc
- caacctso-c71机载静态电源变换器(直流-直流)1.适用性(1.doc
- abhidhammattha-sanga.doc
- cmp-4layers.ppt.ppt
- class_2.ppt
- confidential-smileaviation.doc
- cooperativeclient.doc
- 『用品復運出口後再進口』-用品維修.doc
- 【评测组工作】1nist语料处理1)600w双语语料;gigaword(汉语.doc
- での特別養護老人ホーム整備計画(整備予定事業者)-長崎県.doc
- 一、全民健康保險收入(不含部份負擔)=分列項目參考表核定點數.doc
- 一、建设要求泰安异地灾备中心主要用于生产中心(本地机房)数据库.doc
- 一、目的招募安心專線電話輔導員,並儲備下列知能(一)了解自殺.doc
- 一步一步解读mt4的例子ea.doc
- 一年級視力與口腔保健教育(訓--衛生組).ppt
- 一级医院、门诊部、诊所监督检查汇总表.doc.doc
- 一次性趸缴养老保险费办事指南-广东省社会保险基金管理局.doc
文档评论(0)