===============================================

最后一个: 节选如下 完整在附件

===============================================

6 使用Preference首选项

Android有几种不同的方式来在你的Activity中存放数据。最简单的就是使用preferences首选项系统。

Android允许Activity和应用程序保存首选项。首选项的内容主要是一些键值对(keysvalues),类似于Map。就像首选项的名字一样,一般在用户保存自定义配置信息的时候才用到首选项。比如订阅了RSS,可以把你订阅的信息保存在首选项中。当然,你可以保存任何你想保存的数据,只要你输入了一个String类型的key和一个基本类型的值就可以了~

首选项既可以被一个Activity访问,也可以共享给应用程序中包含的所有Activity。有时候,首选项也可以在应用程序之间进行共享,但是当该首选项文件处于“写入”的时候,是不允许访问的。

得到你想要的

要想访问首选项文件,你需要调用如下方法:

l getPreferences()

这个方法属于Activity自带的类。可以在所在的活动类中,调用。

l getSharedPreferences()

在你的Activity内部调用这个方法,或者调用其他的应用程序的。

这个方法属于Context类。接受两个参数,第一参数是name

name

Desired preferences file. If a preferences file by this name does not exist, it will be created when you retrieve an editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).

表示要获取的首选项文件的名字。如果这个文件不存在,当你通过(SharedPreferences.edit())方法获取一个编辑器,并进行提交后那么就会自动创建一个空的首选项文件

两个方法都可以接受一个用于表示安全模式的参数,一般是int类型的值。我们默认使用0

· MODE_PRIVATE 0

· MODE_WORLD_READABLE 1

· MODE_WORLD_WRITEABLE 2

两个方法都会翻一个SharedPreferences实例,这个实例提供了一套getter方法,用于访问各种指定名字的选项。如果key没有对应的值,则会返回默认值。

SharedPreference

设置你的首选项

在你得到一个SharedPreference对像以后,你可以使用它的edit()方法,获得一个编辑器,这个编辑器可以编辑首选项。

Editor提供了一些编辑方法

其中,

Remove()方法,删除某一个首选项配置

Clear()方法,清空所有配置

Commit(),这个方法很重要,当你对SharedPreferences进行了操作后,一定要Commit,才可以保存下来

下面,我们呢通过一个例子来看下,首选项的使用

首先是布局:

有一个checkbox和一个按钮

Java代码:

点击选项后,再点击close,退出Activity

再重新启动,会看到checkbox已经被选中了

重点是看OnPause()和OnResume()方法。

当你选择close的时候,会让Activity进入onPause(),onStop()甚至onDestroy()方法直到彻底关闭。在这个阶段,会吧做出的选择都保存在首选项中

然后,当重启的时候,会进入onRusme()方法。会读取首选项中的内容。

17 访问文件Files

虽然Android提供了结构化的存储方式:首选项和数据库。但是有时候,使用File来保存,也是一种简单而有效的方式。Android提供了两种访问文件的模式:程序内部的文件,本机硬件里的文件。

开始吧!

假如,在你的程序里有一个静态文件,里面保存了一些单词。最简单的方式是把这个文件放到res/raw目录中,这样的话,当你的程序被打包成apk的时候,就会也把raw下的文件放在apk里。

如果你想访问这个文件,你就需要为你自己准备一个Resources对象。对于Activity来说,得到这个对象很简单,只要调用 getResources()方法即可。Resources对象提供了openRawResource()方法,来得到某一个你要打开的文件的输入流 InputStream。需要注意的是,openRawResource()方法,希望得到的参数不是一个path,而是一个ID。就像findViewById()一样。比如,如果你在res/raw 中放了一个 words.xml文件,那么你可以用

R.raw.words来作为标识符传递给openRawResource()方法

但是,你只能得到一个InputStream,所以你就没有办法修改这个文件了。因此,这个方法也就是只对访问静态数据有用。

下面,我们通过一个例子来看下:

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. python list.sort()根据多个关键字排序的方法实现
  6. Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android(安
  7. android 读取assets指定文件
  8. Android两种播放视频的方法(SurfaceView、MediaPlayer、SeekBar)
  9. android中的Inflater

随机推荐

  1. Android属性之build.prop,及property_get/
  2. Android系统启动流程 -4
  3. 使用WebView中的JavaScript调用Android方
  4. Android存储-SharedPreferences
  5. Android(安卓)MVC模式
  6. Android解析ClassLoader(二)Android中的Cla
  7. android WebView总结
  8. Android(安卓)的消息队列模型
  9. Android(安卓)startservice & bindservic
  10. Eclipse下Android更新升级过程中遇到的问