Android数据篇

Android提供了多种方式(XML文件方式、文件方式、数据库方式等)进行数据的存储。开发者可以根据数据类型和设计的需要,选择适当的存储方式进行数据存储。

1.XML文件管理

XML文件更多的是用来维护应用或系统的配置文件。在Android中,goole提供了SharedPreferences这个轻型的存储类作为XML文件存储的上层接口,其本质上就是<ket, value>值对。

根据配置信息是否对其他应用开放,SharedPreferences提供了MODE_PRIVATE.、MODE_WORLD_READABLE两种权限。SharedPreferences的操作分为获取配置信息和存储配置信息两种方式。下面是获取配置信息的方法:

SharedPreferences settings=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);

boolean silent=settings.getBoolean("silentMode", false);

存储配置信息和获取配置信息略有不同,下面是存储配置信息的方法:

SharedPreference settings=getShatedPreferences(PREFS_NAME, MODE_PRIVATE);

SharedPreference.Editor editor=settings.edit();            //获得编辑器

editor.putBoolean("silentMode", mSilentMode);

editor.commit();          //提交

如果希望配置信息对其他应用开发,在设置权限时,可使用MODE_WORLD_READABLE。在其他应用希望获取相应的配置信息时,必须先获取相应的上下文,方法如下:

context=createPackageContext("com.miaozl.text", Context.CONTEXT_IGNORE_SECURITY);

if(context != null){

SharedPreference settings=context.getSharedPreference(PREFS_NAME,Context.MODE_WORLD_READABLE);

mTest=settings.getString("text", null);

}

需要说明的是,在PreferenceActivity中内置了对SharedPreferences的支持。

如果希望ListPreference保存或查看当前的选择,可以调用的ListPreferences方法如下:

public void setValue(String value)        //对应“android:entries”属性的值

public void setValueIndex(int index)        //对应“android:entryValues”属性的值

public String getValue()

其他的Preference的操作方法类似于ListPreference。

2.内部文件管理

对于二进制数据,Android提供了内部存储的方式,开发者可以将数据存储在应用的私有空间中,避免其他程序的访问,内部存储的数据会在应用卸载时删除。

内部存储的实现非常简单,其权限包括MODE_PRIVATE、MODE_APPEND、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE等。

内部存储所在目录为\data\data\com.company.packagename\files。如果文件名为wors,其内部存储的目录为\data\data\com.android.mms\files\words。

(1)写入数据

写入字符串数据的方法:

FileOutputStream out=context.openFileOutput(file,Context.MODE_WORLD_WRITEABLE);

out.write(captureArray.toString().getBytes());

out.close();

写入结构体数据的方法:

private static void writeConfiguration(Context context, LocaleConfiguration configuration){

DataOutputStream out = null;

out=new DataOutputStream(context.openFileOutput(PREFERENCES, MODE_PRIVATE));

out.writeUTF(configuration.locale);

out.writeInt(configuration.mcc);

out.writeInt(configuration.mnc);

out.flush();

}

(2)读取数据

读取字符串数据的方法:

StringBuilder sb=new StringBuilder();

FileInputStream words=context.openFileInput("word");

int c;

while((c=words.read()) != -1){

if(c==‘\r‘ || c==‘\n‘){

String word=sb.toString().trim();

if(word.length() > 0){

mWord.add(word);

}

sb.setLength(0);

}else{

sb.append((char)c);

}

}

words.close();

mWordCount=mWords.size();

读取数据结构数据的方法:

private static void readConfiguration(Context context, LocaleConfiguration configuration){

DataInputStream in=null;

in=new DataInputStream(context.openFileInput(PREFERENCES));

configuration.locale=in,readUTF();

configuration.mcc=in.readInt();

configuration.mnc=in.readInt();

in.close();

对于应用携带的静态数据,可以放置在应用的assets目录或res、raw目录下。

对于assets目录下的静态数据,存在单个文件最大仅支持1MB的局限,读取方式:InputStream is=getAssets().open("read_asset.txt");

对于res、raw目录下的静态数据,读取方式:InputStream.inputStream=resources.openRawResource(R.raw.definitions);

Android还对创建缓存提供了支持,通过getCacheDir()可以获取应用的缓存路径。在系统可用空间不足时,Android会清空缓存,但对于开发者而言,不应维护过多的缓存。和内部存储一样,在应用卸载时,会清空并删除缓存目录。

3.外部文件管理

时间: 2024-11-10 03:57:10

Android数据篇的相关文章

[Android]数据篇 --- SharedPreferences

转载请标注:转载于http://www.cnblogs.com/Liuyt-61/p/6637515.html --------------------------------------------------------------- Android数据的四种存储方式: 1.SharedPreferences 2.SQLite 3.Content Provider 4.File ----------------------分割线--------------------------------

【Android的从零单排开发日记】之入门篇(八)——Android数据存储(下)

废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基于数据库的应用.Android的数据库应用,依托于当下最流行的开源嵌入式数据库SQLite.在Android中,应用的数据库文件是该应用私有的,存储在应用数据目录下的databases子目录内.从代码结构来看,Android的数据库实现可以分成两个层次,在底层通过C++调用SQLite的接口来执行S

【Android的从零单排开发日记】之入门篇(七)——Android数据存储(上)

在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Android的数据存储是构建在Linux的文件系统上,它充分利用Linux的账号系统来限定应用对数据的访问,部署了一套安全和灵活并重的数据存储解决方案.Android的文件框架,以及各种数据

Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址,如百度外卖.爱鲜蜂收货地址等等:其中他们大多数是可以让我们在地图上移动选址.就如下面这段GIF演示的一样: 尽信书,不如无书-能学到什么? 1.地图状态MapStatus类及监听setOnMapStatusChangeListener 2.定位LocationClient类 3.反地理编码GeoCoder类 工欲善其事必先利其器-申请Key 百度地图访问应用(AK)申请地址:http://lbsyun.baidu

Android总结篇系列:Activity中几个主要函数详解

专注Android领域开发. 仰望星空,同时需要脚踏实地. ——好记性不如烂博客 Android总结篇系列:Activity中几个主要函数详解 Activity作为Android系统中四大基本组件之一,包含大量的与其他的各大组件.intent.widget以及系统各项服务等之间的交互的函数.在此,本文主要选取实际项目开发中常用的,但完全理解又需要有一定深入了解的几个函数进行讲解,后续本文会根据需要不断更新. 1. startActivityForResult / onActivityResult

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

用数据驱动渠道推广(下:数据篇)

数据篇 渠道之怪相 有的运营人员做渠道投放,每个渠道都投放了,点击量特别高,但激活量只有个位数.也有可能点击激活数量都很高,但是留存率很低.费用都花光了,但是效果没有出来.自己做数据分析,但是却得不到结论. 我们做数据分析的前提是需要拿到靠谱的数据.如果数据不准确,基于这个数据分析出来的结论是没有意义的. 获取准确的数据,首先需要我们选择靠谱的统计分析平台,平台的选择可以参考我的前一篇文章.即便在平台靠谱的情况下,也有可能出现一些不靠谱的情况.俗话说,有榜单的地方就有刷榜,有数据统计的平台就有数

Android启动篇 — init原理(一)

========================================================          ======================================================== =              [原创文章]:参考部分博客内容,学习之余进行了大量的筛减细化分析                          =          =                          [特殊申明]:避讳抄袭侵权之嫌疑

[android架构篇]mvp+rxjava+retrofit+eventBus

android架构篇 mvp+rxjava+retrofit+eventBus 高层不应该知道低层的细节,应该是面向抽象的编程.业务的实现交给实现的接口的类.高层只负责调用. 首先,要介绍一下一个项目中好架构的好处:好的软件设计必须能够帮助开发者发展和扩充解决方案,保持代码清晰健壮,并且可扩展,易于维护,而不必每件事都重写代码.面对软件存在的问题,必须遵守SOLID原则(面向对象五大原则),不要过度工程化,尽可能降低框架中模块的依赖性. 之前的一段时间,学习了一些新的技术,并把自己关注的技术整合