写在前面:本文是我参考李刚老师的《疯狂Android讲义》以及API所写的读书笔记,在此表示感谢,本人小白,如有错误敬请指教。

SharedPreferences的使用背景:

  有时候,应用程序有少量的数据需要保存,而这些数据的格式很简单,比如应用程序的配置信息,小游戏的玩家积分,队友这些数据一般使用SharedPrefences进行保存

SharedPreferences的介绍:

  • SharedPreferences 保存的数据是简单的key-value对
  • SharedPreferences 主要用于读取数据,而与之对应的SharedPreferences.Editor进行写入数据

SharedPrefences的获取:SharedPreferences本身只是一个接口,无法直接创建只能通过context的getSharedPreferences()的方法来获取。

  • getSharedPrefences(String name ,int mode) 参数介绍:

API 上的介绍:

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()).

Mode:Use 0 or MODE_PRIVATE for the default operation, MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE to control permissions.

//name:表示你期望访问对象的SharedPrefences,Mode:指定访问权限,默认为MODE_PRIVATE,只能被本应用读取。

SharedPrefenrences的常用方法:

1.edit()的方法产生SharedPrefences.Editor对象与之配合使用

2.getXXX(String key,XXX values):获取key对应的XXX类型的值

3.getAll():返回所有的值

4.contains(String key): 判断是否包含某一个key。

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

SharedPreferences.Editor总结:

与SharedPrefences相辅相成,写入数据

常用方法:

一定不能忘了commit的方法在执行若干操作之后,不然edit之前的操作不会产生什么效果。

putXXX(String key XXX vules);向key 中放XXX类型的值。

remove(String key):移除某key下的所有值

SharedPreferences的数据保存位置:

SharedPreferences的数据总是以XML文件保存在data/data/<包名>目录下。

第二部分:访问其他应用程序的SharedPrefences:

由于:SharedPrefences是由context创建的所以访问其他应用程序的SharedPrefences关键是先创建出其他应用的context,

然后context调用getSharedPrefences(String name ,int mode);创建出SharedPrefences的对象,如需写入数据再调用SharedPrefences.edit()的方法来创建editor。

//注意:mode所代表的访问权限

//mycontext=CreatePackageContext(Stringname, Context.CONTEXT_IGNORE_SECURITY)

//name表示其他应用程序的包名,包名是应用程序的唯一标识。

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

以下代码是用来创建一个简单的读取数据的事例,xml布局比较简单就是两个Button。主代码如下:

package com.Lzt.shareddemo;

import java.text.SimpleDateFormat;
import java.util.Date; import android.support.v7.app.ActionBarActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends ActionBarActivity {
SharedPreferences Prefences;
SharedPreferences .Editor editor;
Button bt1, bt2;
Button bt3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Prefences = getSharedPreferences("Demo", MODE_WORLD_READABLE);
editor = Prefences.edit();
bt1 = (Button)findViewById(R.id.button1);
bt2 = (Button)findViewById(R.id.button2);
bt3 = (Button)findViewById(R.id.button3);
bt1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
String time = Prefences.getString("time",null);
int randmun = Prefences.getInt("randmun",0);
String result = time==null?"你还没写入数据啊":"你写入的时间为"+time+"\n你写入的数据为"+randmun;
Toast.makeText(MainActivity.this, result, 5000).show(); }
});
bt2.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
//格式调用的方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日"+"hh:mm:ss");
//以key-values对来操作数据
editor.putString("time",sdf.format(new Date()));
//产生随机数的方法,病强制转换为Int
editor.putInt("randmun", (int) (Math.random()*100));
//editor的putXXX表示将XXX类型的数据写入
//editor与SharedPreferences的关系有点像Map里面的方法,editor用来写入数据,preferences则用来读出数据、
//editor.putInt("count", count++);
editor.commit();
//editor.commit()的方法不能忘了,不然以上所有写入的操作将无用
//boolean commit :调用该方法,提交修改
} }); } @Override
public 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;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

Android数据储存之SharedPreferences总结的更多相关文章

  1. Android数据储存之SharedPreferences

    Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...

  2. Android数据存储-通过SharedPreferences实现记住密码的操作

    在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...

  3. Android 数据存储之 SharedPreferences储存

    ------------------------------------------SharedPreferences存储--------------------------------------- ...

  4. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  5. Android数据存储之SharedPreferences存储

    安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串.整形.布 ...

  6. Android数据存储之sharedpreferences与Content Provider

    android中对数据操作包含有: file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序 ...

  7. Android数据存储三剑客——SharedPreferences、File、SQLite

    Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...

  8. android数据储存之存储方式

    能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...

  9. Android数据持久化技术 — — —SharedPreferences

    SharedPreferences是使用键值对的方式来存储数据. 要想使用SharedPreferences来存储数据,必须获取SharedPreferences对象,获取SharedPreferen ...

随机推荐

  1. WinSCP 工具

    windows 与 Linux 传文件,非常方便.安全.

  2. HttpServletRequest request 获取form参数的两种方式

    @RequestMapping(value="/pay",method = RequestMethod.POST) public String buildRequest(HttpS ...

  3. 使用筛法在 O(logN) 的时间内查询多组数的素数因子

    Prime Factorization using Sieve O(log n) for multiple queries 使用筛法在 O(logN) 的时间内查询多组数的素数因子 前言 通常, 我们 ...

  4. xpath模块

    W3School官方文档:http://www.w3school.com.cn/xpath/index.asp 我们使用xpath主要是获取网页数据的,之前一直是使用bs4,xpath也是最近了解到的 ...

  5. Mysql url参数浅析

    驱动包用的是mysql-connector-java-8.0.11.jar 新版的驱动类改成了com.mysql.cj.jdbc.Driver //北京时间东八区 serverTimezone=GMT ...

  6. Xcode 中 pch 文件配置 - iOS

    一.简介 首先 pch 文件(即:Prefix Header)是一种预编译文件,在 Xcode 6 之前创建新的工程则会自动将该文件一起创建出来,但在 Xcode 6 之后苹果官方则默认将自动创建的方 ...

  7. HDU 1052 Tian Ji -- The Horse Racing(贪心)

    题目来源:1052 题目分析:题目说的权值匹配算法,有点误导作用,这道题实际是用贪心来做的. 主要就是规则的设定: 1.田忌最慢的马比国王最慢的马快,就赢一场 2.如果田忌最慢的马比国王最慢的马慢,就 ...

  8. LunaSchedule记录

    博客访问量突破10000!!!(值得高兴一下 用一学期超级课程表,被50+M的内存占用,巨慢的加载速度给弄烦了,就自己开发了一款课程表管理程式 添加日历订阅,自动导入到系统日历,无需安装任何app L ...

  9. LeetCode-177:第N高的薪水

    第N高的薪水与第二高的薪水,解题思路是一样的,只要对LeetCode-176的SQL做一下变形,便可以满足这题,详见:https://www.cnblogs.com/zouqf/p/10282392. ...

  10. 平衡二叉查找树 AVL 的实现

    不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找).如何解决这个问题呢?关键在于如何最大限度的减小树的深度.正是基于这个想法,平衡二叉树出现了. 平衡二叉树的定义 (A ...