程序是数据的输入、处理和输出的过程,不管是操作系统还是应用程序都是不可避免的要用到大量的数据。由于内存容量有限,且不能长期保存数据,因此一般把它们以文件的形式保存在磁盘等存储介质中。操作系统一般是以文件的形式来保存数据的,而应用程序一般以数据库来保存数据。
在手机这种特殊设备里,也经常会存取一些数据。例如,音频文件,视频文件、图片文件和通信录等数据。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
分享到:
相关推荐
android, sdk, andorid-sdk_r17-windows, tools ,解压放到andorid-sdk_r-windows目录下。配合platform-tools, ADT-17使用
"andorid-饼图API.rar"这个压缩包很可能包含了一个用于绘制饼图的Android库,可能是开发者已经封装好的类或者组件。 Android饼图API的关键知识点包括以下几个方面: 1. **绘图库选择**:Android官方SDK并没有直接...
【Android 教室管理系统开发详解】 在Android平台上构建一个教室...它的设计和实现涵盖了Android开发的多个关键领域,包括用户界面设计、网络通信、数据存储以及安全性考虑,是理解Android应用开发的一个典型实例。
在Android开发中,饼状图是一种常见的数据可视化方式,它能直观地展示各个部分与整体之间的比例关系。本文将深入探讨如何在Android应用中创建和使用饼状图,基于提供的"andorid-饼状图.rar"压缩包,我们可以假设其中...
在Android开发中,TabHost是一个非常重要的组件,它允许开发者在一个Activity中创建多个Tab来展示不同的内容区域。这个“android-tabHost展示数据listview.rar”压缩包文件显然包含了一个示例,展示了如何在TabHost...
这个"andorid-背景改变摇晃手机感应"压缩包文件包含了一个实现此类功能的项目,下面将详细介绍相关的Android开发知识和技术点。 1. **传感器(Sensor)API**:Android系统提供了丰富的传感器API,可以让开发者访问...
"andorid-wifi检测.zip"这个压缩包很可能包含了用于检查和分析Android设备WiFi性能的工具或代码库。以下是一些可能包含在其中的关键知识点: 1. **WiFi扫描与连接**:在Android系统中,可以通过调用`WifiManager`类...
性能优化方面,应注意减少不必要的数据传输,合理安排线程以避免阻塞UI。 通过这个项目,开发者可以学习到Android平台与嵌入式硬件的集成,提升跨平台开发能力,同时加深对硬件控制和物联网应用的理解。
- **MessageQueue**:存储所有待处理消息的队列,Looper不断地从MessageQueue中取出消息并交给Handler处理。 #### 七、总结 通过学习上述知识点,我们可以了解到多线程在Android开发中的重要性及其基本原理。掌握...
在“andorid-饼图带引导线.rar”这个压缩包中,我们很显然关注的是如何在Android应用中实现具有引导线功能的饼图。引导线在饼图中的作用是帮助用户更好地理解数据点所代表的信息,它可以指示从饼图的一个扇区到相...
【Android 猜拳游戏开发详解】 Android 猜拳游戏是一款基于Android平台的轻量级应用程序,它允许用户与手机进行互动,体验经典的石头、剪刀、布游戏。这款游戏通常包括用户界面设计、逻辑处理、随机数生成、胜负...
总的来说,Android平台上的饼图和柱状图实现主要依赖于第三方库,如MPAndroidChart,开发者需要了解其API用法,进行数据设置和样式定制,以创建符合需求的可视化组件。同时,为了提高用户体验,还需考虑图表的交互性...
轻量级 H5 Native Hybrid 框架 轻量级litehybrid框架适合适合大多数 app 的 H5 Native 交互的,交互原理较为简单。 GIT 地址:LiteHybrid。其代码分两部分,litehybird 为框架代码。 主工程 为示例代码, ...
1. **游戏框架结构**:捕鱼达人源代码首先会展示一个完整的游戏项目结构,包括各个模块的划分,如UI界面、数据管理、网络通信、游戏逻辑等。这有助于我们了解如何构建大型的Android应用。 2. **游戏场景与对象管理*...
8. **数据绑定**:如果你的TAB内容依赖于后端数据,可以使用MVVM架构和数据绑定库(如`LiveData`和`ViewModel`)来确保数据在页面间同步。 9. **性能优化**:为了提高用户体验,应确保只在当前显示的页面加载和渲染...
•Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇---Gallery(画廊视图) • •Android---UI篇---...
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); ...
2. **WebView组件**:在Android中,WebView是一个可以让应用加载和显示网页内容的组件。开发者可以使用WebView加载本地或远程的HTML5页面,并通过JavaScript与Java之间的交互(JavaScript Interface)实现原生功能,...
7. **更好的安全性和隐私保护**:包括加密改进、安全启动、运行时权限的强化以及对数据安全的更多控制。 8. **优化的内存管理**:Android 8.0改进了内存回收机制,减少了应用的启动时间和内存占用。 9. **更快的...
【作品名称】:基于java开发的andorid 源码--北京公交线路查询(离线) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍...