`

玩转Andorid---组件篇---数据存储之preference

阅读更多

程序是数据的输入、处理和输出的过程,不管是操作系统还是应用程序都是不可避免的要用到大量的数据。由于内存容量有限,且不能长期保存数据,因此一般把它们以文件的形式保存在磁盘等存储介质中。操作系统一般是以文件的形式来保存数据的,而应用程序一般以数据库来保存数据。

在手机这种特殊设备里,也经常会存取一些数据。例如,音频文件,视频文件、图片文件和通信录等数据。Andorid作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络,可以根据程序的实际需要选择合适的存取方式。

另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Andorid提供了Content Provider组件来实现程序指间的数据共享。

 

 

Preference提供了一种轻量级的数据存取方法,应用场合主要是数据比较少的配置信息。它以“键-值”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,我们设置了一个手机的开机问候语,可以将其以Preference方式来进行配置。

 

Preference简介:

使用Preference方式来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在andorid.content包中。

调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:

MODE_PRIVATE(私有)

MODE_WORLD_READABLE(可读)

MODE_WORLD_WRITEABLE(可写)

 

SharedPreferences提供了获取数据的方法,如getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value)、pubInt(String key,int value)等,调用该接口的commit方法可以将数据进行保存。SharedPreferences和SharedPreferences.Editor的常用方法如下:

 

SharedPreferences的常用方法

方法名称

方法描述

edit()

返回SharedPreferences的内部接口SharedPreferences.Editor

contains(String key)

判断是否包含该键值

getAll()

返回所有配置信息Map

getBoolean(String key,Boolean defValue)

获得一个boolean

getFloat(String key,float defValue)

获得一个float

getInt(String key,int defValue)

获得一个int

getLong(String key,long defValue)

获得一个long

getString(String key,String defValue)

获得一个String

 

SharedPreferences.Editor

方法名称

方法描述

clear()

清楚所有值

commit()

保存

getAll()

返回所有配置信息Map

putBoolean(String key,Boolean value)

保存一个boolean

putFloat(String key,float value)

保存一个float

putInt(String key,int value)

保存一个int

putLong(String key,long value)

保存一个long

putString(String key,String value)

保存一个String

remove(String key)

删除该键对应的键

 

 

下面是个小例子:

说明:

我们经常会有这样的经历,当我们在编辑短信的时候,突然来了一个电话。我们停止发送短信,去打电话,那么,当我们打完电话回来,我们编辑了一半的短信内容应该还在才对,这里我们就用Preference来保存临时短信内容

 

创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。

在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。

 

package org.hualang.preference;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

public class PreferenceTest extends Activity {
    /** Called when the activity is first created. */
	private EditText edit;
	private Button btn;
	private static final String TEMP_SMS="temp_sms";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edit=(EditText)findViewById(R.id.myedit);
        btn=(Button)findViewById(R.id.mybutton);
        SharedPreferences pre=getSharedPreferences(TEMP_SMS,MODE_WORLD_READABLE);
        String content=pre.getString("sms_content","");
        edit.setText(content);
    }
    protected void onStop()
    {
    	super.onStop();
    	SharedPreferences.Editor editor=getSharedPreferences(TEMP_SMS,MODE_WORLD_WRITEABLE).edit();
    	editor.putString("sms_content", edit.getText().toString());
    	editor.commit();
    }
}

运行结果:

 

 

当编辑了一些内容后,会出屏幕再返回,发现原来编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了,如下:



 到处这个文件,并且打开后,结果是这样的

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="sms_content">红酥手,黄滕酒。满城春色宫强流</string>
</map>

 

  • 大小: 13.5 KB
  • 大小: 8.3 KB
分享到:
评论

相关推荐

    andorid-sdk-windows.tools

    android, sdk, andorid-sdk_r17-windows, tools ,解压放到andorid-sdk_r-windows目录下。配合platform-tools, ADT-17使用

    andorid-饼图API.rar

    "andorid-饼图API.rar"这个压缩包很可能包含了一个用于绘制饼图的Android库,可能是开发者已经封装好的类或者组件。 Android饼图API的关键知识点包括以下几个方面: 1. **绘图库选择**:Android官方SDK并没有直接...

    andorid-check-system.rar_教室管理系统

    【Android 教室管理系统开发详解】 在Android平台上构建一个教室...它的设计和实现涵盖了Android开发的多个关键领域,包括用户界面设计、网络通信、数据存储以及安全性考虑,是理解Android应用开发的一个典型实例。

    andorid-饼状图.rar

    在Android开发中,饼状图是一种常见的数据可视化方式,它能直观地展示各个部分与整体之间的比例关系。本文将深入探讨如何在Android应用中创建和使用饼状图,基于提供的"andorid-饼状图.rar"压缩包,我们可以假设其中...

    andorid-tabHost展示数据listview.rar

    在Android开发中,TabHost是一个非常重要的组件,它允许开发者在一个Activity中创建多个Tab来展示不同的内容区域。这个“android-tabHost展示数据listview.rar”压缩包文件显然包含了一个示例,展示了如何在TabHost...

    andorid-背景改变摇晃手机感应.rar

    这个"andorid-背景改变摇晃手机感应"压缩包文件包含了一个实现此类功能的项目,下面将详细介绍相关的Android开发知识和技术点。 1. **传感器(Sensor)API**:Android系统提供了丰富的传感器API,可以让开发者访问...

    andorid-wifi检测.zip

    "andorid-wifi检测.zip"这个压缩包很可能包含了用于检查和分析Android设备WiFi性能的工具或代码库。以下是一些可能包含在其中的关键知识点: 1. **WiFi扫描与连接**:在Android系统中,可以通过调用`WifiManager`类...

    基于TINY4412的Andorid开发-------简单的LED灯控制源代码

    性能优化方面,应注意减少不必要的数据传输,合理安排线程以避免阻塞UI。 通过这个项目,开发者可以学习到Android平台与嵌入式硬件的集成,提升跨平台开发能力,同时加深对硬件控制和物联网应用的理解。

    andorid- 多线程

    - **MessageQueue**:存储所有待处理消息的队列,Looper不断地从MessageQueue中取出消息并交给Handler处理。 #### 七、总结 通过学习上述知识点,我们可以了解到多线程在Android开发中的重要性及其基本原理。掌握...

    andorid-饼图带引导线.rar

    在“andorid-饼图带引导线.rar”这个压缩包中,我们很显然关注的是如何在Android应用中实现具有引导线功能的饼图。引导线在饼图中的作用是帮助用户更好地理解数据点所代表的信息,它可以指示从饼图的一个扇区到相...

    andorid-猜拳游戏.rar

    【Android 猜拳游戏开发详解】 Android 猜拳游戏是一款基于Android平台的轻量级应用程序,它允许用户与手机进行互动,体验经典的石头、剪刀、布游戏。这款游戏通常包括用户界面设计、逻辑处理、随机数生成、胜负...

    andorid-饼图&柱状图.rar

    总的来说,Android平台上的饼图和柱状图实现主要依赖于第三方库,如MPAndroidChart,开发者需要了解其API用法,进行数据设置和样式定制,以创建符合需求的可视化组件。同时,为了提高用户体验,还需考虑图表的交互性...

    Android代码-Andorid-LiteHybrid-WebView

    轻量级 H5 Native Hybrid 框架 轻量级litehybrid框架适合适合大多数 app 的 H5 Native 交互的,交互原理较为简单。 GIT 地址:LiteHybrid。其代码分两部分,litehybird 为框架代码。 主工程 为示例代码, ...

    andorid-捕鱼达人源代码.rar

    1. **游戏框架结构**:捕鱼达人源代码首先会展示一个完整的游戏项目结构,包括各个模块的划分,如UI界面、数据管理、网络通信、游戏逻辑等。这有助于我们了解如何构建大型的Android应用。 2. **游戏场景与对象管理*...

    andorid-TAB界面(滑动切换).zip

    8. **数据绑定**:如果你的TAB内容依赖于后端数据,可以使用MVVM架构和数据绑定库(如`LiveData`和`ViewModel`)来确保数据在页面间同步。 9. **性能优化**:为了提高用户体验,应确保只在当前显示的页面加载和渲染...

    Android---UI篇

    •Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇---Gallery(画廊视图) • •Android---UI篇---...

    安卓java读取网页源码-Andorid-learning:Andorid-学习

    Andorid-learning 目录: 0-0 0-1 1-1 1-2 1-3 1-4 0-0 隐藏顶部栏状态栏 在代码 oncreate: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

    andorid-HTML5.zip_android_android html5_html5_html5 android_查询 h

    2. **WebView组件**:在Android中,WebView是一个可以让应用加载和显示网页内容的组件。开发者可以使用WebView加载本地或远程的HTML5页面,并通过JavaScript与Java之间的交互(JavaScript Interface)实现原生功能,...

    andorid-26

    7. **更好的安全性和隐私保护**:包括加密改进、安全启动、运行时权限的强化以及对数据安全的更多控制。 8. **优化的内存管理**:Android 8.0改进了内存回收机制,减少了应用的启动时间和内存占用。 9. **更快的...

    基于java开发的andorid 源码--北京公交线路查询(离线)

    【作品名称】:基于java开发的andorid 源码--北京公交线路查询(离线) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍...

Global site tag (gtag.js) - Google Analytics