Android四种数据存储的应用方式

 更新时间:2017年10月09日 14:54:33   作者:viclee108  
这篇文章主要介绍了Android四种数据存储的应用方式的相关资料,希望通过本文能帮助到大家,让大家理解掌握Android存储数据的方法,需要的朋友可以参考下

Android四种数据存储的应用方式

 作为一个完整的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、文件存储、SQLite、 Content Provider。对这几种方式的不同和应用场景整理如下。

第一种: 使用SharedPreferences存储数据

  适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等

  核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data//shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:

 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数据库这样的其他数据存储方式。

第二种: 文件存储数据

  可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。

  写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。

  读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。

第三种:SQLite存储数据

  SQLite Database数据库。Android对数据库的支持很好,它本身集成了SQLite数据库,每个应用都可以方便的使用它,或者更确切的说,Android完全依赖于SQLite数据库,它所有的系统数据和用到的结构化数据都存储在数据库中。 它具有以下优点: a. 效率出众,这是无可否认的 b. 十分适合存储结构化数据 c. 方便在不同的Activity,甚至不同的应用之间传递数据。  

第四种:ContentProvider

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

  总结一下,文件适用于存储一些简单的文本数据或者二进制数据,SharedPreferences适用于存储一些键值对,而数据库则适用于那些复杂的关系型数据。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android注册登录实时自动获取短信验证码

    Android注册登录实时自动获取短信验证码

    注册登录或修改密码功能常常需要输入短信验证码,如何自动获取短信验证码,这篇文章就为大家介绍了Androidcv注册登录自动获取短信验证码的实现代码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android Java调用自己C++类库的实例讲解

    Android Java调用自己C++类库的实例讲解

    今天小编就为大家分享一篇关于Android Java调用自己C++类库的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Android 中对JSON数据解析实例代码

    Android 中对JSON数据解析实例代码

    这篇文章主要介绍了Android 中对JSON数据解析实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android实现悬浮窗的简单方法实例

    Android实现悬浮窗的简单方法实例

    相信大家应该也都发现了,现在很多应用都使用到悬浮窗,例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示,下面这篇文章主要给大家介绍了关于Android实现悬浮窗的简单方法,需要的朋友可以参考下
    2021-09-09
  • kotlin Context使用详解

    kotlin Context使用详解

    这篇文章主要介绍了kotlin Context使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android序列化XML数据

    Android序列化XML数据

    有时候一些项目中需要传递一些XML格式的数据,如何把一个对象序列化为XML格式,本文就讲讲Android序列化XML数据的方法
    2013-11-11
  • Android DrawerLayout带有侧滑功能的布局类(2)

    Android DrawerLayout带有侧滑功能的布局类(2)

    这篇文章主要为大家详细介绍了Android DrawerLayout带有侧滑功能的布局类,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android自定义ViewGroup之WaterfallLayout(二)

    Android自定义ViewGroup之WaterfallLayout(二)

    这篇文章主要为大家详细介绍了Android自定义ViewGroup之WaterfallLayout,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android中Serializable和Parcelable序列化对象详解

    Android中Serializable和Parcelable序列化对象详解

    这篇文章主要介绍了Android中Serializable和Parcelable序列化对象的相关资料,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android自定义View软键盘实现搜索

    Android自定义View软键盘实现搜索

    本文给大家分享android自定义view软键盘实现搜索,对android软键盘相关知识感兴趣的朋友一起学习吧
    2015-12-12

最新评论