Android数据储存之SharedPreferences总结
写在前面:本文是我参考李刚老师的《疯狂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总结的更多相关文章
- Android数据储存之SharedPreferences
Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- Android 数据存储之 SharedPreferences储存
------------------------------------------SharedPreferences存储--------------------------------------- ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android数据存储之SharedPreferences存储
安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串.整形.布 ...
- Android数据存储之sharedpreferences与Content Provider
android中对数据操作包含有: file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序 ...
- Android数据存储三剑客——SharedPreferences、File、SQLite
Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...
- android数据储存之存储方式
能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...
- Android数据持久化技术 — — —SharedPreferences
SharedPreferences是使用键值对的方式来存储数据. 要想使用SharedPreferences来存储数据,必须获取SharedPreferences对象,获取SharedPreferen ...
随机推荐
- python3中使用HTMLTestRunner.py报ImportError: No module named 'StringIO'的解决办法
.原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法: 参考:http://bbs.chinaunix.net/thread-415474 ...
- 2018.8.4session的removeAttribute()和invalidate()的区别
session的removeAttribute()和invalidate()的区别 session.invalidate()是销毁跟用户关联session,例如有的用户强制关闭浏览器,而跟踪用户的信息 ...
- fast rcnn的实例
http://www.cnblogs.com/louyihang-loves-baiyan/p/4906690.html https://saicoco.github.io/object-detect ...
- Linux内存管理 —— 内核态和用户态的内存分配方式
1. 使用buddy系统管理ZONE我的这两篇文章buddy系统和slab分配器已经分析过buddy和slab的原理和源码,因此一些细节不再赘述.所有zone都是通过buddy系统管理的,buddy ...
- Vue nodejs商城项目-搭建express框架环境
1.express-project 搭建express框架环境 安装express generator生成器 通过生成器自动创建项目 配置分析 安装 cnpm i -g express-generat ...
- 通过ip地址访问同一局域网下已经启动的angular项目
通常tomcat启动的项目同一局域网下我们都可以访问.angular启动的前台项目别人怎么访问,一直不懂,后来知道启动命令加个参数就行了 首先查看本机ip 第二步,启动命令里加上--host 本机ip ...
- python 错误问题解决
获取天气信息 #encoding:UTF-8 import urllib.request import re def getHtml(url): page=urllib.request.urlopen ...
- vue登录插件引来的后续问题
上次介绍了下写的登录弹框插件,过了几天发现点击去注册或者改密码的跳转失效.报错this.$router.push is not a function,继续打印this.$router也是undefin ...
- linux下Tomcat配置提示权限不够解决办法
在终端输入命令 sudo chmod -R 777 /opt/Tomcat,那么Tomcat文件夹和它下面的所有子文件夹的属性都变成了777(读/写/执行权限)
- JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令
1. 创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password']; //user:用户名,host:主机名,passw ...