Android开发学习笔记:数据存取之Preference浅析

简介:

一.Preference的简介

    Preference(配置)提供了一种轻量级的数据存取方法,主要应用于数据比较少的配置信息。它以“key-value”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,手机的开机问候语,可以将其以Preference方式来进行配置。也可以保存一些用户个性化设置的字体、颜色、位置等参数信息。

二.Preference存取数据的方法

使用到的接口:

    SharedPreferences接口和SharedPreferences.Editor接口,它们都是来自于andorid.content包。

①SharedPreferences接口提供保存数据的方法

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

  • MODE_PRIVATE(私有)
  • MODE_WORLD_READABLE(可读)
  • MODE_WORLD_WRITEABLE(可写)

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接口提供获得数据的方法

    SharedPreferences.Editor接口中的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.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()方法提交内容。

MainActivity.java

 
  1. package com.android.preference;  
  2.  
  3. import android.app.Activity;  
  4. import android.content.SharedPreferences;  
  5. import android.os.Bundle;  
  6. import android.widget.Button;  
  7. import android.widget.EditText;  
  8.  
  9. public class MainActivity extends Activity {  
  10.     private EditText myEditText;  
  11.     private Button btn;  
  12.     private static final String TEMP_INFO="temp_info";  
  13.     @Override 
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.           
  18.         myEditText = (EditText)findViewById(R.id.EditText1);  
  19.         btn = (Button)findViewById(R.id.Button1);  
  20.           
  21.         //获得SharedPreferences实例  
  22.         SharedPreferences sp = getSharedPreferences(TEMP_INFO, MODE_WORLD_READABLE);  
  23.         //从SharedPreferences获得备忘录的内容  
  24.         String content = sp.getString("info_content""");  
  25.         //在EditText中显示备忘录内容  
  26.         myEditText.setText(content);  
  27.           
  28.     }  
  29.       
  30.     @Override 
  31.     protected void onStop() {  
  32.         super.onStop();  
  33.         //获得编辑器  
  34.         SharedPreferences.Editor editor = getSharedPreferences(TEMP_INFO, MODE_WORLD_WRITEABLE).edit();  
  35.         //将EditText中的文本内容添加到编辑器  
  36.         editor.putString("info_content", myEditText.getText().toString());  
  37.         //提交编辑器内容  
  38.         editor.commit();  
  39.     }  

main.xml

 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="备忘录"
  11. />
  12. <EditText
  13. android:text=""
  14. android:id="@+id/EditText1"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. />
  18. <Button
  19. android:id="@+id/Button1"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:text="保存"
  23. />
  24. </LinearLayout>

效果图:

        当我们退出屏幕再返回的时候,发现原来备忘录里编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了。


本文转自 lingdududu 51CTO博客,原文链接: http://blog.51cto.com/liangruijun/658521


相关文章
|
21天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
97 0
|
1月前
|
设计模式 人工智能 开发工具
安卓应用开发:构建未来移动体验
【2月更文挑战第17天】 随着智能手机的普及和移动互联网技术的不断进步,安卓应用开发已成为一个热门领域。本文将深入探讨安卓平台的应用开发流程、关键技术以及未来发展趋势。通过分析安卓系统的架构、开发工具和框架,本文旨在为开发者提供全面的技术指导,帮助他们构建高效、创新的移动应用,以满足不断变化的市场需求。
18 1
|
1月前
|
机器学习/深度学习 调度 Android开发
安卓应用开发:打造高效通知管理系统
【2月更文挑战第14天】 在移动操作系统中,通知管理是影响用户体验的关键因素之一。本文将探讨如何在安卓平台上构建一个高效的通知管理系统,包括服务、频道和通知的优化策略。我们将讨论最新的安卓开发工具和技术,以及如何通过这些工具提高通知的可见性和用户互动性,同时确保不会对用户造成干扰。
33 1
|
12天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
15天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。
|
15天前
|
Java Android开发
Android开发之使用OpenGL实现翻书动画
本文讲述了如何使用OpenGL实现更平滑、逼真的电子书翻页动画,以解决传统贝塞尔曲线方法存在的卡顿和阴影问题。作者分享了一个改造后的外国代码示例,提供了从前往后和从后往前的翻页效果动图。文章附带了`GlTurnActivity`的Java代码片段,展示如何加载和显示书籍图片。完整工程代码可在作者的GitHub找到:https://github.com/aqi00/note/tree/master/ExmOpenGL。
19 1
Android开发之使用OpenGL实现翻书动画
|
15天前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
13 1
Android开发之OpenGL的画笔工具GL10
|
21天前
|
Android开发
Android开发小技巧:怎样在 textview 前面加上一个小图标。
Android开发小技巧:怎样在 textview 前面加上一个小图标。
12 0
|
21天前
|
Android开发
Android 开发 pickerview 自定义选择器
Android 开发 pickerview 自定义选择器
12 0