小猪的Android入门之路 Day 7 part 2

Android的数据存储与訪问之——SharedPreferences(保存偏好參数)

---转载请注明出处:coder-pig

本节引言:

在Part 1中我们学会了Android中文件的读写,而在Part 2中我们会介绍一个轻量级的存储类——

SharedPreferences(偏好參数保存),就是用来保存软件中用户的一些设置,比方一个游戏的app,用户

能够自己设置是否开游戏音,是否自己主动登录等!下次启动app时就不用用户再次设置了!我们都知道

在Windows系统下的软件通常使用ini文件作为配置文件,而在J2SE中使用properties属性文件与xml

文件来保存软件的配置信息;而在Android中我们经常常使用SharedPreferences进行软件配置的保存,当然

他的背后还是使用xml文件进行存储数据的!好了,開始part 2的学习吧!

本节学习路线图:

正文:

SharePreferences的引入与使用流程:


代码演示样例:

效果图:

流程是输入账号password后点击登录,将信息保存到SharedPreference文件里,

然后重新启动app,看到数据已经显示在文本框中了

同一时候打开File Expoler打开data/data/<包名>能够看到在shared_prefs文件夹下生成了一个xml文件

点击导出到桌面能够看到里面的内容:

參考代码下载:代码下载

读写其它应用的SharedPreferences


代码演示样例:

效果图:

就是读取上一个Demo中存储好的SharedPreferences,然后通过Toast显示出来

代码非常easy,就一个Activity,这里就贴一下吧!

package com.example.sharedpreferencesdemo2;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button btnshow;
private Context othercontext;
private SharedPreferences sp; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnshow = (Button) findViewById(R.id.btnshow);
btnshow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获得第一个应用的包名,从而获得相应的Context,须要对异常进行捕获
try {
othercontext = createPackageContext("com.jay.example.sharedpreferencedemo1",Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {e.printStackTrace();} //依据Context取得相应的SharedPreferences
sp = othercontext.getSharedPreferences("mysp",Context.MODE_WORLD_READABLE);
String name = sp.getString("username", "");
String passwd = sp.getString("passwd", "");
Toast.makeText(getApplicationContext(), "Demo1的SharedPreference存的的用户名为:" + name + "\npassword为" + passwd, Toast.LENGTH_SHORT).show();
}
});
}
}

ps:好了,关于SharedPreferences的使用就说到这里,事实上对于xml文件,我们也能够自己进行解析,比方Android

特有的XMLpull解析器,或者用DOM,SAX等在兴许会专门总结下xml文件的解析,敬请期待,另外谢谢各位朋友的

支持!写博一段时间了感触非常多非常多,我不是什么大牛,不会什么高大上的技术,我仅仅是默默地做着一些微不足道的

事,我仅仅是希望自己写的文章思清晰点,给想学习编程又感到迷茫的朋友一个方向,不至于无从下手,现在市面上相关

的參考书鱼龙混杂,对一些知识讲得云里雾里的,学完善像没学一样!我个人的思想是先掌握基本理论基础,知道怎

么用!学习完基础以后,更重要的就是实践,通过项目去积累编码量,巩固知识点,先从小的项目入手,最后再做一个

大的项目!本系列的目的就是入门,接着第二个系列就是通过实际的小项目去应用这些基础知识,敬请期待哈!

再一次感谢各位朋友的支持,我会坚持写下去的!仅仅要有人愿意看!



小猪的Android入门之路 Day 7 part 2的更多相关文章

  1. 小猪的Android入门之路 Day 3 - part 3

    小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...

  2. 小猪的Android入门之路 day 1

    小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...

  3. 小猪的Android入门之路 Day 4 - part 1

    小猪的Android入门之路 Day 4 - part 1 Android事件处理机制之--基于监听的事件处理机制 本节引言: 在開始本个章节前,我们先回想下,如今我们已经知道了android的一些相 ...

  4. Android学习之路——简易版微信为例(一)

    这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...

  5. Android入门教程之我见

    真正的从安卓入门学习到实际工作也差不多一年时间了,也做了几个项目.在这期间经历了一开始学习Android的基本知识后仍旧无从下手,不知道如何开始开发一个app,到现在也开始学会注意Android架构的 ...

  6. Android入门之文件系统操作

    Android入门之文件系统操作(二)文件操作相关指令 (转)   (一)获取总根 File[] fileList=File.listRoots(); //返回fileList.length为1 // ...

  7. ❤️【Android精进之路-01】定计划,重行动来学Android吧❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. Android精进之路第一篇,确定安卓学习计划. 干货满满,建议收藏,需要用到时常看看.小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 前言 ...

  8. ANDROID学习之路 转

    版权声明:本文为 stormzhang 原创文章,可以随意转载,但必须在明确位置注明出处!!! 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回答如何自学android编程, 就借这个机会在 ...

  9. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

随机推荐

  1. IE9 "CSS 因 Mime 类型不匹配而被忽略“问题

    写页面的时候在chrome,fireforks等页面上显示正常,但是换成IE9之后就完全没有样式了.IE真是个奇葩的怪胎.它的报错信息是’CSS 因 Mime 类型不匹配而被忽略‘,也就是说所有的.c ...

  2. linux之SQL语句简明教程---CREATE VIEW

    视观表 (View) 可以被当作是虚拟表格.它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料. 建立一个视观表的语法如下: CREATE VIEW & ...

  3. stl_map,set 用法

    set: 集合a,b加起来,去重 hdu 1406 #include <iostream> #include<cstdio> #include<set> using ...

  4. firefox必备扩展

    1.首先,当然要推荐 Adblock Plus 安装地址:https://adblockplus.org/zh_CN/firefox 作用:屏蔽广告,从此和该死的广告说拜拜吧(不论是百度推广,还是别的 ...

  5. asp.net session的原理

    session,会话,指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间. A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连 ...

  6. codevs1387

    题目描述                     Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 图案按照 ...

  7. 【笔记】让DIV水平垂直居中的两种方法

    今天写的了百度前端学院春季班的任务:定位和居中问题  由于距离上次学习CSS有点久远了,加上以前木有记笔记的习惯,方法忘得只剩下一种,今天通过网上查阅资料总结了以下两种简单的方法让DIV水平垂直居中. ...

  8. BZOJ 4008: [HNOI2015]亚瑟王( dp )

    dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...

  9. Servle原理

    这篇博客将以Tomcat为例讲一讲Servlet的原理 Servlet容器 Servlet与Servlet容器的关系举个不恰当的例子就像枪和子弹的关系.而Servlet就是子弹,容器就是枪.子弹都有统 ...

  10. 表格(table) 插件:支持当前行增行、删除。使用事件委托

    最近做一个项目,需要对表格进行增行和删行. 研究了一下jquery操作dom的方法和事件委托原理,下面是我编写的例子,源码传上,欢迎高手指点. 功能: 支持在指定行下面增行: 支持删行指定行: 增行. ...