Android教程 -09 数据的持久化存储
2015-12-10 13:54
351 查看
视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷
任何一个程序其实说白了就是在不停地和数据打交道,数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证及时手机关机的情况下,这些数据仍然不会丢失。
Android中存储方式有五种:
使用SharedPreferences存储数据
文件存储数据
SQLite数据库存储数据
使用ContentProvider存储数据
网络存储数据
核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
创建SharedPreferences的方法:
SharedPreferences使用方法:
看到上面的代码,我们就可以做保存密码的实际案例了:
视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷
常见的加密方式为MD5加密
视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷
MD5加密是不可逆的加密算法, 只能 明文->密文 密文是不能转换成明文的, 银行卡密码都是采用MD5加密的,但是银行卡密码都是用md5加密后的密文再进行加密,反复几十次,基本上保证密码非常安全。
未完待续…..
任何一个程序其实说白了就是在不停地和数据打交道,数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证及时手机关机的情况下,这些数据仍然不会丢失。
Android中存储方式有五种:
使用SharedPreferences存储数据
文件存储数据
SQLite数据库存储数据
使用ContentProvider存储数据
网络存储数据
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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建SP config = 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 -value edit.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 255 if(result.length()<2){ sb.append("0");// 让十六进制数 全部都是两位数 } sb.append(result); } return sb.toString(); // 把加密后的密文返回回去 } catch (NoSuchAlgorithmException e) { e.printStackTrace(); // can't reach return ""; } }
MD5加密是不可逆的加密算法, 只能 明文->密文 密文是不能转换成明文的, 银行卡密码都是采用MD5加密的,但是银行卡密码都是用md5加密后的密文再进行加密,反复几十次,基本上保证密码非常安全。
未完待续…..
相关文章推荐
- Android 开发常用的工具类
- Fragment生命周期 android基础三
- android 窗口管理
- Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用
- Android—ListView Item 展开动画效果
- Android 图片加载Bitmap OOM错误解决办法
- GitHub 优秀的 Android 开源项目
- android 屏幕适配(一)基本适配
- Android所有View通用下拉刷新上拉加载控件
- Android中获取应用程序(包)的信息-----PackageManager的使用
- Android页面布局控件-Android学习笔记
- Android 隐藏软键盘
- android:process=":remote"和android:process="remote"的区别
- Android Studio配置AndroidAnnotations
- Android所有权限说明
- 正则表达式-理论基础篇
- Intent android基础二
- 每个Android开发者都应该了解的资源列表
- 每个Android开发者都应该了解的资源列表
- 每个Android开发者都应该了解的资源列表