`
senlinwuran
  • 浏览: 15844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android保存数据几种常用方法解析

阅读更多

    Android 手机操作系统是一款基于Linux平台的开源操作系统。它应用于手机中能够帮助我们实现许多需求。比如今天为大家介绍的Android保存数据,就是其中一个比较重要的操作技巧。

    对于我们所熟悉的大部分软件都有一个比较典型的特点,应用现有的数据根据不同的需求来得到相应的结果。例如,我们最常用的Officeword、Excel、PowerPoint等办公软件,它们都是帮助我们完成某种特定的需求,同时由其所产生的数据或者文档又可以被其它软件所读取和做进一步的优化等等,在这个层面上可以看成是这些软件通过相同的文件标准来共享数据。但是对于Android最大的不同点在于,其平台上的应用软件所存储的数据或者文件是私有,仅仅可以通过它自身才可以访问其所包含的数据资源。

    那么基于这样的限制,该如何在Android平台上实现不同程序间的数据共享呢?答案非常简单 – 应用ContentProviders,这是建立在Android平台上用于定义统一的数据标准。Android提供了针对不同数据类型的ContentProviders来满足各种需要。例如:Image、Audio、Video和通讯录信息类等。阅读下边的文档之前,最好先熟悉Content Providers的概念。

    有了上边所提到Content Providers,接下来就要处理在共享文件过程中的存储环节了,这里有四种方法分别适用于不同情况的需求。它们都各自有相应的优缺点,所以当开发者决定选择应用哪种方法之前,先要考虑当前所操作的情况是否适合于所选择的方法。

  1. Preferences  
  2. Files  
  3. Databases  
  4. Network 

接下来将依次介绍上诉四个Android保存数据方法:

Preferences从其保存数据的结构来分析,这是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。

通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据(不包括使用Content Providers)。

通过一个实例来了解实际使用方法:

  1. import android.app.Activity;  
  2. import android.content.SharedPreferences;  
  3. public class Calc extends Activity {  
  4. public static final String PREFS_NAME = "MyPrefsFile";  
  5. . . . .   
  6. Override  
  7. protected void onCreate(Bundle state){  
  8. super.onCreate(state);  
  9. . . . .  
  10. // Restore preferences  
  11. SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  12. boolean silent = settings.getBoolean("silentMode", false);  
  13. setSilent(silent);  
  14. }  
  15. @Override  
  16. protected void onStop(){  
  17. super.onStop();  
  18. // Save user preferences. We need an Editor object to  
  19. // make changes. All objects are from android.context.Context  
  20. SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  
  21. SharedPreferences.Editor editor = settings.edit();  
  22. editor.putBoolean("silentMode", mSilentMode);  
  23. // Don't forget to commit your edits!!!  
  24. editor.commit();  
  25. }  

 

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

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

读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。
(注意:在其它程序中将无法应用相同的路径和文件名来操作文件)

另外编译程序之前,在res/raw/tempFile中建立一个static文件,这样可以在程序中通过Resources.openRawResource (R.raw.myDataFile)方法同样返回一个InputStream对象,直接读取文件内容。

Databases在Android API中包括了应用SQLite databases的接口,每个程序所创建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。

在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。

对于SQLitedatabase而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型 “First Name” “Last Name” “PhoneNumber”和“Photo”等。

Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接操作SQLite database。
数据库在设备中保存的地址是 /data/data/package_name/databases

Network通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。下面列出了两个用于相关操作的类:

  1. java.net.*  
  2. android.net.* 

以上是四种Android保存数据的方法常用于针对Android平台来存储和读取数据的方法。

Android 手机操作系统是一款基于Linux平台的开源操作系统。它应用于手机中能够帮助我们实现许多需求。比如今天为大家介绍的Android保存数据,就是其中一个比较重要的操作技巧。

    Android组件相关概念总结
    Android传值方法细讲
    Android横竖屏切换正确实现方式分享
    Android开发环境相关配置概览
    Android NDK具体作用讲解

对于我们所熟悉的大部分软件都有一个比较典型的特点,应用现有的数据根据不同的需求来得到相应的结果。例如,我们最常用的Officeword、Excel、PowerPoint等办公软件,它们都是帮助我们完成某种特定的需求,同时由其所产生的数据或者文档又可以被其它软件所读取和做进一步的优化等等,在这个层面上可以看成是这些软件通过相同的文件标准来共享数据。但是对于Android最大的不同点在于,其平台上的应用软件所存储的数据或者文件是私有,仅仅可以通过它自身才可以访问其所包含的数据资源。

那么基于这样的限制,该如何在Android平台上实现不同程序间的数据共享呢?答案非常简单 – 应用ContentProviders,这是建立在Android平台上用于定义统一的数据标准。Android提供了针对不同数据类型的ContentProviders来满足各种需要。例如:Image、Audio、Video和通讯录信息类等。阅读下边的文档之前,最好先熟悉Content Providers的概念。

有了上边所提到Content Providers,接下来就要处理在共享文件过程中的存储环节了,这里有四种方法分别适用于不同情况的需求。它们都各自有相应的优缺点,所以当开发者决定选择应用哪种方法之前,先要考虑当前所操作的情况是否适合于所选择的方法。

    Preferences 
    Files 
    Databases 
    Network

接下来将依次介绍上诉四个Android保存数据方法:

Preferences从其保存数据的结构来分析,这是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。

通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据(不包括使用Content Providers)。

通过一个实例来了解实际使用方法:

    import android.app.Activity; 
    import android.content.SharedPreferences; 
    public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 
    . . . .  
    Override 
    protected void onCreate(Bundle state){ 
    super.onCreate(state); 
    . . . . 
    // Restore preferences 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean silent = settings.getBoolean("silentMode", false); 
    setSilent(silent); 
    } 
    @Override 
    protected void onStop(){ 
    super.onStop(); 
    // Save user preferences. We need an Editor object to 
    // make changes. All objects are from android.context.Context 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("silentMode", mSilentMode); 
    // Don't forget to commit your edits!!! 
    editor.commit(); 
    } 
    }

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

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

读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。
(注意:在其它程序中将无法应用相同的路径和文件名来操作文件)

另外编译程序之前,在res/raw/tempFile中建立一个static文件,这样可以在程序中通过Resources.openRawResource (R.raw.myDataFile)方法同样返回一个InputStream对象,直接读取文件内容。

Databases在Android API中包括了应用SQLite databases的接口,每个程序所创建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。

在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。

对于SQLitedatabase而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型 “First Name” “Last Name” “PhoneNumber”和“Photo”等。

Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接操作SQLite database。
数据库在设备中保存的地址是 /data/data/package_name/databases

Network通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。下面列出了两个用于相关操作的类:

    java.net.* 
    android.net.*

以上是四种Android保存数据的方法常用于针对Android平台来存储和读取数据的方法。

 

分享到:
评论

相关推荐

    六,Android Xml解析

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它用于存储和传输结构化数据。XML解析是将XML文档转换为Java对象的过程,这对于Android应用程序的资源配置、布局定义以及数据交换至...

    android 三种方式解析XML(DOM,Pull,Sax) 带文件编码识别

    在Android开发中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。XML文件可以被解析以获取其中的数据并进行处理。本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型...

    Android 实现永久保存数据的方法详解

    本文将详细解析几种常见的Android数据保存方法,包括它们的特点、适用场景以及潜在的风险,并针对如何实现永久保存数据提供一些策略。 1. **SharedPreferences** SharedPreferences是一种轻量级的数据存储方式,常...

    Android平板本地数据excel的导入导出

    在Android平台上,对本地数据进行Excel的导入与导出是一项常见的需求,特别是在处理表格类数据时。本篇文章将深入探讨如何在Android平板上实现这一功能,主要涉及Android应用开发、Excel处理以及数据存储的相关知识...

    Android高级应用源码-android二维码的生成和解析.zip

    在Android平台上,二维码的生成与解析是移动开发中常见的功能,尤其在信息交换、链接跳转、支付场景等中广泛应用。这份"Android高级应用源码-android二维码的生成和解析.zip"压缩包提供了一套完整的解决方案,帮助...

    androidXML解析实例代码

    在Android开发中,XML(eXtensible Markup Language)是一种常用的数据存储和交换格式,尤其在应用程序的配置、布局和数据传输中发挥着关键作用。本实例代码将深入探讨如何利用SAX(Simple API for XML)解析器处理...

    Android签名证书文件的解析和签名校验的加强

    #### 二、Android签名证书文件解析方法 对于Android签名证书文件的解析,主要有以下几种途径: 1. **使用Android提供的解析类**:这是最直接也是最便捷的方式,适用于Android平台上的开发。 2. **利用Java提供的...

    Android离线数据同步方案.doc

    3. **数据保存结构**:有两种常见的保存本地数据的方法: - **按业务数据类型分表**:这种方法直观清晰,但可能导致数据库结构与业务紧密耦合,不易复用。 - **统一表存储**:所有数据保存在一个大表中,根据数据...

    Android JSON 解析库的使用

    本文将详细介绍两种常用的Android JSON解析库——Gson和Fast-json,以及它们的特点、优势、基本用法,并通过实际应用案例展示如何在Android项目中有效利用它们。 1. Gson库 Gson是Google提供的一个Java库,能够将...

    android二维码的生成及解析(Demo)

    在Android平台上,二维码的生成与解析是常见的功能需求,它涉及到图像处理、编码解码以及用户界面设计等多个方面。本文将深入探讨如何在Android应用中实现这一功能。 首先,我们需要理解二维码的基本概念。二维码...

    google天气预报XML-Pull解析版(完全解析)

    XML-Pull解析是一种轻量级的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要一次性加载整个XML文档到内存中。XML-Pull解析器在读取XML文档时,只处理当前的事件,这样可以节省...

    基于Android的仿QQ微信聊天系统

    7. **数据存储**:本地存储聊天记录,可以利用SQLite数据库或者Android的SharedPreferences来保存用户状态和设置。 在开发过程中,我们还需要考虑性能优化,如异步处理网络请求,避免主线程阻塞,以及合理使用内存...

    Android读写XML.docx

    Android支持的XML解析API主要包括以下几种: 1. **DOM (Document Object Model)**:DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,形成一个完整的节点树。开发者可以通过DOM接口访问和修改...

    Android常用工具类

    在Android开发中,工具类(Utility Classes)是程序员经常使用的代码模块,它们提供了一组静态方法,用于执行特定的任务或简化常见的操作。本篇文章将详细探讨Android开发中的几个常用工具类,包括LOG、Toast、...

    Android应用开发中数据的保存方式总结

    本篇文章将总结几种常见的数据保存方式。 一、保存文件到手机内存 在Android中,可以将数据保存到手机的内部存储空间。这里我们看到一个`saveToRom`方法,它接受`Context`对象,用户名`name`和密码`password`作为...

    json数据解析

    本文详细介绍了 JSON 数据的基本结构、解析方法以及在 Android 平台上如何使用 Java 进行 JSON 数据的处理。通过具体的示例代码展示了如何构建 JSON 数据以及如何解析 JSON 数据,并利用了 org.json 库中的几个核心...

    android安卓app开发教程之生成二维码,解析识别二维码.zip

    在Android平台上,开发一款能够生成和解析二维码的App是一项实用且常见的任务。本文将深入探讨如何在Android应用中实现这一功能,主要涉及以下几个关键知识点: 1. **二维码基础**: 二维码(Quick Response Code...

    Android开发常用文件.zip

    本资料"Android开发常用文件.zip"涵盖了几个关键的文件操作实例,包括图像处理、数值运算以及屏幕截图等功能。以下是对这些知识点的详细说明: 1. 图像处理: - **转换图片**:在Android中,我们可能需要将图片从...

    android中DiskLruCache缓存类

    LRU缓存策略是一种常用的内存管理策略,当缓存空间满时,会优先淘汰最近最少使用的数据。而DiskLruCache则将这种策略应用于硬盘,它创建了一个在外部存储上的文件系统缓存,通过键值对的形式存储数据,便于快速读取...

    android备忘录源码

    在Android平台上,开发一款备忘录应用是一种常见的实践,它能帮助用户记录日常生活中的琐事、待办事项或重要信息。本源码提供了一个完整的Android备忘录应用的实现,对于学习Android应用开发或者想要深入理解备忘录...

Global site tag (gtag.js) - Google Analytics