小猪的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. 【Leetcode】查找二叉树中任意结点的最近公共祖先(LCA问题)

    寻找最近公共祖先,示例如下: 1 /           \ 2           3 /    \        /    \ 4    5      6    7 /    \          ...

  2. linux命令之ls命令的简明讲解

    我详细熟悉linux操作系统的同学对ls命令是再熟悉不过了因为我们通常使用该命令查看某个目录下的文件 其命令形式是:ls [选项] 目录或者文件 本文中主要讲解两个最常用的选项: -l:用于列出文件的 ...

  3. js LocalStorage

    此对象主要有两个方法:保存数据:localStorage.setItem(Key, value);读取数据:localStorage.getItem(Key);Key:表示你要存入的键名称,此名称可以 ...

  4. mongodb启动关闭;

    [正确关闭方法] 方法一 ps  -ef |grep mongodb 找到你要查找的进程号 kill -2  pid    杀掉 方法二 也可以进入到mongo数据库里面进行操作./mongouse ...

  5. css控制父元素下的子元素自适应高度,且高度一致

    css代码: .wrap{width:600px;margin:0 auto; overflow:hidden;} .left{background:#ccc;width:300px;float:le ...

  6. NSRangeFromString(<#NSString * _Nonnull aString#>) 和rangeOfString

    NSRangeFromString NSString *str1 = @"abcdef"; NSString *str2 = @"1-105"; NSStrin ...

  7. DW 做一个table表 对单元格进行合并

    编辑前的代码 <body> <table width="500" border="0" bgcolor='#000000' backgroun ...

  8. 如何获取浏览器URL中查询字符串的参数

    首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主 ...

  9. C++ Primer 读书笔记:第11章 泛型算法

    第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数 ...

  10. Struts学习之ValueStack学习

    1. 数据传输背后机制:ValueStack(值栈) 在这一切的背后,是因为有了ValueStack(值栈)! ValueStack基础:OGNL OGNL是Struts2中使用的一种表达式语言,它可 ...