对于我们所熟悉的大部分软件都有一个比较典型的特点,应用现有的数据根据不同的需求来得到相应的结果。例如,我们最常用的Office word、Excel、PowerPoint等办公软件,它们都是帮助我们完成某种特定的需求,同时由其所产生的数据或者文档又可以被其它软件所读取和做 进一步的优化等等,在这个层面上可以看成是这些软件通过相同的文件标准来共享数据。但是对于Android最大的不同点在于,其平台上的应用软件所存储的 数据或者文件是私有,仅仅可以通过它自身才可以访问其所包含的数据资源。
那么基于这样的限制,该如何在Android平台上实现不同程序间的数据共享呢?答案非常简单 - 应用Content Providers,这是建立在Android平台上用于定义统一的数据标准。Android提供了针对不同数据类型的Content Providers来满足各种需要。例如:Image、Audio、Video和通讯录信息类等。阅读下边的文档之前,最好先熟悉Content Providers的概念。
有了上边所提到Content Providers,接下来就要处理在共享文件过程中的存储环节了,这里有四种方法分别适用于不同情况的需求。它们都各自有相应的优缺点,所以当开发者决定选择应用哪种方法之前,先要考虑当前所操作的情况是否适合于所选择的方法。
Preferences
Files
Databases
Network
接下来将依次介绍上诉四个方法:
Preferences
从其保存数据的结构来分析,这是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用 于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据(不包括使用Content Providers)。
通过一个实例来了解实际使用方法:
01.import android.app.Activity;
02.import android.content.SharedPreferences;
03.
04.public class Calc extends Activity {
05.public static final String PREFS_NAME = "MyPrefsFile";
06. . . .
07.
08. @Override
09. protected void onCreate(Bundle state){
10. super.onCreate(state);
11.
12. . . .
13.
14. // Restore preferences
15. SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
16. boolean silent = settings.getBoolean("silentMode", false);
17. setSilent(silent);
18. }
19.
20. @Override
21. protected void onStop(){
22. super.onStop();
23.
24. // Save user preferences. We need an Editor object to
25. // make changes. All objects are from android.context.Context
26. SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
27. SharedPreferences.Editor editor = settings.edit();
28. editor.putBoolean("silentMode", mSilentMode);
29.
30. // Don't forget to commit your edits!!!
31. editor.commit();
32. }
33.}
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()方法来创建新的数据库。
对于SQLite database而言,其强大和方便的功能为Android提供了强有力的存储功能。特别是存储一些复杂的数据结构,例如:Android特别为通讯录创 建了特有的数据类型,其中包含了非常多的子集而且涵盖了大部分的数据类型 “First Name” “Last Name” “Phone Number”和“Photo”等。
Android可以通过Sqlite3 database tool来查看指定数据库中表的内容,直接运行SQL命令来快速便捷的直接操作SQLite database,参考 Examine databases (sqlite3)了解更多内容。
数据库在设备中保存的地址是 /data/data/package_name/databases
Network
通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。下面列出了两个用于相关操作的类:
java.net.*
android.net.*
以上是四种常用于针对Android平台来存储和读取数据的方法。
原文地址 http://www.androidres.com/?p=350
分享到:
相关推荐
Android保存数据的四种方法[借鉴].pdf
在Android开发中,有时候有些数据需要保存,在下次打开能够使用,那么如何保存呢?本资源通过一个例子使用SharedPreferences保存数据。
android ini文件 sharePrefernces 保存数据
Android中内部文件保存读取,sd卡文件保存读取,首选项的保存和读取还有数据库的数据保存和读取。非常全
Android 3种数据保存(SharedPreferences存储 内部文件存储 数据库存储),如项目包有问题请联系我谢谢
Android保存用户数据到手机内存中 http://blog.csdn.net/eeeduo/article/details/37831559
SQLite是一个轻量级的数据库,它能将数据保存到你的手机,但缺点是一旦软件卸载所有数据将一同被销毁。所以要根据自己的项目需要选择性的使用。下面要演示将SQLite中的数据提取出来。 首先定义一个类用来实例化...
这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。...
Android 的配置信息保存到本地并且查询出来显示。很基础哦,适合新手哦
Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...
Android数据存储(非图片),将网络json数据系列化成对象,存储到内存和文件中。下一次直接从内存或者文件中获取数据,减少网络开销。
该项目主要功能是将数据写入到word中,需要的同志可以下载看看,项目中需要的jar包可在 http://download.csdn.net/detail/linzhenxiang123/9717253 进行下载
Android的SQLite中DateTime类型数据的存取问题
Android 11 获取Gps 文件的
主要为大家详细介绍了Android存储字符串数据到txt文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
有需要可以看看,动态将想要的数据通过该接口直接写到本地文件
本文介绍Android中的5种数据存储方式,具体内容如下 数据存储在开发中是... SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveI
RT,由RGB数据和位图宽高构建位图对象并显示出来 适合将解码得到的数据显示在屏幕上
Android应用源码之数据的储存与读取