Preferences是一种应用程序内部轻量级的数据存储方案。Preferences主要用于存储和查询简单的数据类型的数据,包括:boolean、int、float、long以及String等,存储方式以键值对的形式存放在应用程序的私有文件夹下。

Preferences一般用来存储应用程序的设置信息,如应用程序的色彩,字体大小等,在应用程序中获取Preferences的方式如下

一、调用Context对象的getSharedPreferences方法获得SharedPreferences对象。需要传入SharedPreferences的名称和打开模式,名称为Preferences文件的名称,如果不存在则创建一个以传入名称为新的Preferences文件;打开模式为Private、MODE_WORLD_READABLE和MODE+WORLD_WRITEABLE其中之一。

二、调用Activity对象的getPreferences方法获得SharedPreferences对象。需要传入打开模式,打开模式为Private、MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE其中之一。

同样,通过两种不通途径获得的SharedPreferences对象并不是完全相同的,区别如下:

一、通过Context对象的getSharedPreferences方法获得的SharedPreferences对象可以被同意应用程序的其他组件共享

二、而使用Activity对象获得的SharedPreferences则只能在响应的Activity中使用

以下为简单的实现代码:

首先是需要配置布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><TextViewandroid:id="@+id/myText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><EditTextandroid:id="@+id/myEdit"android:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="none" /><Buttonandroid:id="@+id/myBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/my_button" /></LinearLayout>

这里要实现的功能是,当每次启动Activity时,会从应用程序的Preferences文件中读取数据并显示出来;而每次退出Activity时,将EditText空间当前的内容存储到Preferences文件中,冲虚的Activity代码如下:

package com.demo.preferencespro;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {// 定义组件private EditText myEdit = null;private TextView myText = null;private Button myBtn = null;private SharedPreferences sharedPref = null;public final String EDIT_TEXT_KEY = "EDIT_TEXT";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 取得组件myEdit = (EditText) findViewById(R.id.myEdit);myText = (TextView) findViewById(R.id.myText);myBtn = (Button) findViewById(R.id.myBtn);// 获得SharedPreference对象的引用sharedPref = getPreferences(MODE_PRIVATE);// 获取内容String result = sharedPref.getString(EDIT_TEXT_KEY, null);// 判断获取的值是否为空if (result != null) {myText.setText(result);}// 设置监听myBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {new AlertDialog.Builder(MainActivity.this).setIcon(R.drawable.img_logo).setMessage("退出本程序").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {MainActivity.this.finish();}}).setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {}}).show();}});}@Overrideprotected void onDestroy() {// 获得SharedPreferences的Editor对象SharedPreferences.Editor editor = sharedPref.edit();// 修改数据editor.putString(EDIT_TEXT_KEY, String.valueOf(myEdit.getText()));// 调用该方法以提交修改editor.commit();super.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

启动应用程序后,在EditText 控件中输入一些内容,然后关闭程序,当再次启动程序的时候TextView控件中讲显示上次退出时EditText里面的内容。

下图为程序第一次启动 并在EditText控件手动敲入文字后的效果

下图为第二次启动程序时屏幕的显示

下图为保存的Preferences文件内容。可以在data-->data-->com.demo.preferencespro(程序的包名称)-->shared_prefs中找到文件

文件路径:

文件内容,键值对。

简单的数据存储--Preferences的使用相关推荐

  1. 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题

    鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 文章目录 鸿蒙harmonyOS 使用轻量级数据存储Preferences出现的一个问题 前言 一.使用同一个上下文即可 ...

  2. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

  3. 深入剖析Android中最简单的数据存储方式:SharedPreferences

    目录 一. 使用SharedPreferences存储数据 二. 数据的存储位置和格式 三.存储数据的获取 四. 存取复杂类型的数据 五. 设置数据文件的访问权限 Hello,你好呀,我是灰小猿,一个 ...

  4. 8.1 Android Basic 数据存储 Preferences Dialog(使用对话框的Preferences)

    <<PrefsDemo_Dialog.zip>> Dialog(使用对话框的Preferences) 新建项目 PrefsDemo_Dialog 编辑res/layout/ma ...

  5. NSKeyedUnarchiver简单的数据存储

    2019独角兽企业重金招聘Python工程师标准>>> - (void)saveClassData:(NSMutableArray *)array {if ([array count ...

  6. android app数据存储,基于Android开发的APP数据存储研究

    谢原武+龙文 摘要: 作为一个完整的应用程序,数据存储操作是必不可少的.Android系统一共提供了四种数据存储方式分别为File文件存储.Shared Preferences存储.ContentPr ...

  7. Kotlin进行数据存储

    Kotlin与Android的数据持久化操作 <Kotlin从0基础到精通Android开发>学习笔记(与Java对比): 学习目标: 关于Kotlin与Android的数据持久化操作,我 ...

  8. MaxCompute实战之数据存储

    MaxCompute(原名ODPS),是阿里巴巴自主研发的海量数据处理平台. 主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的分析建模服务.支持PB级别数据分析,常 ...

  9. Android数据存储之文件存储

    -- 大家都知道,数据和算法是一个应用程序的核心.所以,学好数据存储是非常有必要的. --Android数据的存储有多种方式,比如ContentProvider(内容提供者).SQLite(嵌入式数据 ...

最新文章

  1. 字节跳动AI Lab 再失大将!大牛王长虎被爆已离职回归学界!
  2. python 内存中的文件操作 StringIO cStringIO 简介
  3. mongodb安装_MongoDB和Web应用程序
  4. 【Deep Learning笔记】Optic Disc 数据集
  5. 使用 uiautomator2
  6. MYSQL 查看当前用户与数据库版本
  7. 百度网盘linux客户端无法下载
  8. [Spark]PySpark入门学习教程---例子RDD与DataFrame
  9. 第一次接触终极事务处理——Hekaton
  10. Django: OperationalError / no such table
  11. 怎么输出一个二维数组_LeetCode54与59,一个口诀教会你旋转二维数组
  12. SQL Server里查看当前连接的在线用户数
  13. python查询mysql数据库_用python操作mysql数据库(之简单查询操作)
  14. 思考…求知(double和Double的区别)
  15. C语言经典贪心算法之加油站问题(详解)
  16. arm 升腾310_简单说说华为海思的芯片产品线
  17. arcgis开发 多版本之间如何兼容_arcgis api 4.x for js 结合 react 入门开发系列初探篇(附源码下载)...
  18. 图书馆管理系统前景与范围文档
  19. 阿里矢量图标库项目添加合作者
  20. EOS官方钱包keosd

热门文章

  1. connman添加获取BSSID(热点/路由器MAC)功能
  2. IDEA的Android的SDK环境配置
  3. Simulink 自动代码生成原理
  4. fiilt1左耳连不上_FIIL T1 缺点总结
  5. 机器语言是用计算机的,基本机器语言
  6. Admui 框架开发文档
  7. POJ 1589 Unix ls
  8. [Luogu 3674] 小清新人渣的本愿
  9. 什么是深拷贝?什么是浅拷贝?如何实现深拷贝?
  10. Flutter --- Dart简介