视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷

任何一个程序其实说白了就是在不停地和数据打交道,数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证及时手机关机的情况下,这些数据仍然不会丢失。
Android中存储方式有五种:

  1. 使用SharedPreferences存储数据
  2. 文件存储数据
  3. SQLite数据库存储数据
  4. 使用ContentProvider存储数据
  5. 网络存储数据

SharedPreferences存储数据

适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等

核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。

创建SharedPreferences的方法:

Context getSharedPreferences()
Activity getPreferences()
PreferenceManager  getDefaultSharedPreference()

SharedPreferences使用方法:

edit() 开始编辑
apply()和commit() 提交数据
getXXX() 获取数据
public class MainActivity extends AppCompatActivity {private EditText editText;// sp保存数据SharedPreferences config;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建SPconfig = getSharedPreferences("config", MODE_PRIVATE);editText = (EditText) findViewById(R.id.editText);// 读取保存的数据  写入到editText// 取数据   参数2为 如果找不到"data"key值,默认返回的数据String data=config.getString("data","");editText.setText(data);}/**按钮点击事件*/public void saveData(View v) {// 1 获取输入的内容String data = editText.getText().toString();// 2获取到了编辑器SharedPreferences.Editor edit = config.edit();// 3 保存数据  key -valueedit.putString("data",data);//4 保存到文件中//edit.commit(); // 效率慢edit.apply();  // 效率快}
}

看到上面的代码,我们就可以做保存密码的实际案例了:

视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷

MD5加密

上面的Demo,我们保存了密码,一般在实际开发的过程中,保存密码都不要保存明文, 很容易被别人窃取密码, 一般都对密码进行加密
常见的加密方式为MD5加密

视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷

public class MD5Utils {/*** 对密码进行加密* @param password  要加密的密码* @return  密文*/public static String digest(String password){try {//加密方式为MD5加密MessageDigest digest=MessageDigest.getInstance("MD5");// 把一个byte数组 转换成加密后byte数组byte[] bytes = digest.digest(password.getBytes());StringBuilder sb=new StringBuilder();for(byte b:bytes){// 去掉负数int c=b&0xff;  // 负数转换成正数   // 加盐String result=Integer.toHexString(c)+3;// 把10进制的数 转换成16进制的数 0 255if(result.length()<2){sb.append("0");// 让十六进制数 全部都是两位数}sb.append(result);}return sb.toString();  // 把加密后的密文返回回去} catch (NoSuchAlgorithmException e) {e.printStackTrace();// can't reachreturn "";}}

MD5加密是不可逆的加密算法, 只能 明文->密文 密文是不能转换成明文的, 银行卡密码都是采用MD5加密的,但是银行卡密码都是用md5加密后的密文再进行加密,反复几十次,基本上保证密码非常安全。

未完待续…..

转载于:https://www.cnblogs.com/hehe520/p/6329907.html

Android教程 -09 数据的持久化存储相关推荐

  1. 爬虫-scrapy数据的持久化存储

    今日概要 基于终端指令的持久化存储 基于管道的持久化存储 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指 ...

  2. QIIME 2教程. 09数据导入Importing data(2020.11)

    文章目录 QIIME 2用户文档. 9数据导入 导入带质量值的FASTQ测序数据 EMP标准混样单端数据 EMP混样双端数据 Casava1.8单端混样数据 Casava 1.8双端拆分后数据 **F ...

  3. java 访问手机存储卡,Android App将数据写入内部存储和外部存储的示例

    File存储(内部存储) 一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密. Context提供了2个方法来打开输入.输出流 FileInputStream openFil ...

  4. (三十九)数据的持久化存储-plist实现(XML属性表)

    iOS应用数据存储的常用方式: 归档:用某种格式保存数据. XML属性列表(plist)归档(持久化) Preference 偏好设置 NSKeyedArchiver归档 SQLite3 数据库 效率 ...

  5. QIIME 2教程. 09数据导入Importing data(2021.2)

    QIIME 2用户文档. 9数据导入 Importing data 原文地址:https://docs.qiime2.org/2020.11/tutorials/importing/ 为了使用QIIM ...

  6. Flutter持久化存储之文件存储

    前言 本篇将给大家分享Flutter中的file存储功能,Flutter SDK本身已经有File相关的api,所以在Flutter中使用file存储的关键是如何获取手机中存储的目录,然后根据目录路径 ...

  7. Scrapy框架实现持久化存储

    硬盘存储 (1) 基于终端指令 * 保证parse方法返回一个可迭代类型的对象(存储解析到页面内容) * 使用终端指定完成数据存储到磁盘文件的操作      scrapy crawl 爬虫文件名称 - ...

  8. scrapy实现链家二手房的数据获取并进行持久化存储

    理解Scrapy框架各个组成的作用:五大组成,下载器,调度器,引擎,爬虫,管道. 引擎:它是整个Scrapy框架的核心,用来处理整个系统的数据流,触发各种事件.用于控制调度器,下载器,爬虫,管道. 爬 ...

  9. Android数据持久化存储

    Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...

最新文章

  1. 报告 | 2017年云商业智能市场分析:云计算比大数据更重要
  2. 智慧城市“聪明”在哪儿
  3. SQL Server里Grouping Sets的威力
  4. linux在shell中获取系统时间,linux在shell中获取时间
  5. scip 练习2.18
  6. 入门训练 Fibonacci数列 c语言
  7. mfc exe 在繁体系统 乱码_成都市招标文件编制及备案系统使用技巧问答
  8. 计算机的服务如何还原,电脑怎么样还原到出厂设置
  9. [转]网页不需要漂亮
  10. 【学习OpenCV】—— 深入了解 cv::Mat
  11. jquery插件函数传参错误
  12. PHP批量去除PHP文件中bom的代码
  13. 计算机网络华为模拟器,华为模拟器eNSP Win10版
  14. (二)网络传输协议:网络摄像机传输协议、流媒体传输协议
  15. 3DMax 2014中文版安装破解教程
  16. PS修改图片的背景颜色(无需抠图)
  17. CTF-代码审计(2)
  18. 逆向工程实验——pre9(可执行文件的加密MD5碰撞lab)
  19. 想起了三联书店 [戴文葆]
  20. 使用数据流引擎进行大型矩阵操作

热门文章

  1. session的常用方法。
  2. ASPNET登陆总结
  3. 站长日常工作必备记录详细单
  4. [转]程序员生涯总结
  5. 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现
  6. httpClient3.1 笔记
  7. Infiniband网络抓包
  8. java 线程数组_Java 数组线程间可见性问题
  9. 医学影像设备学_【技士/师证考试宝典】第四篇 医学影像设备学2
  10. 赋能 打造应对不确定性的敏捷团队 pdf_《赋能》:麦克里斯特尔教你打造应对不确定性的敏捷团队...