Android教程 -09 数据的持久化存储
視頻為本篇播客知識點講解,建議采用超清模式觀看, 歡迎點擊訂閱我的優(yōu)酷
任何一個程序其實說白了就是在不停地和數(shù)據(jù)打交道,數(shù)據(jù)持久化就是指將那些內(nèi)存中的瞬時數(shù)據(jù)保存到存儲設(shè)備中,保證及時手機關(guān)機的情況下,這些數(shù)據(jù)仍然不會丟失。
Android中存儲方式有五種:
SharedPreferences存儲數(shù)據(jù)
適用范圍:保存少量的數(shù)據(jù),且這些數(shù)據(jù)的格式非常簡單:字符串型、基本類型的值。比如應(yīng)用程序的各種配置信息(如是否打開音效、是否使用震動效果、小游戲的玩家積分等),解鎖口 令密碼等
核心原理:保存基于XML文件存儲的key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。
創(chuàng)建SharedPreferences的方法:
Context getSharedPreferences() Activity getPreferences() PreferenceManager getDefaultSharedPreference()SharedPreferences使用方法:
edit() 開始編輯 apply()和commit() 提交數(shù)據(jù) getXXX() 獲取數(shù)據(jù) public class MainActivity extends AppCompatActivity {private EditText editText;// sp保存數(shù)據(jù)SharedPreferences config;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 創(chuàng)建SPconfig = getSharedPreferences("config", MODE_PRIVATE);editText = (EditText) findViewById(R.id.editText);// 讀取保存的數(shù)據(jù) 寫入到editText// 取數(shù)據(jù) 參數(shù)2為 如果找不到"data"key值,默認返回的數(shù)據(jù)String data=config.getString("data","");editText.setText(data);}/**按鈕點擊事件*/public void saveData(View v) {// 1 獲取輸入的內(nèi)容String data = editText.getText().toString();// 2獲取到了編輯器SharedPreferences.Editor edit = config.edit();// 3 保存數(shù)據(jù) key -valueedit.putString("data",data);//4 保存到文件中//edit.commit(); // 效率慢edit.apply(); // 效率快} }看到上面的代碼,我們就可以做保存密碼的實際案例了:
視頻為本篇播客知識點講解,建議采用超清模式觀看, 歡迎點擊訂閱我的優(yōu)酷
MD5加密
上面的Demo,我們保存了密碼,一般在實際開發(fā)的過程中,保存密碼都不要保存明文, 很容易被別人竊取密碼, 一般都對密碼進行加密
常見的加密方式為MD5加密
視頻為本篇播客知識點講解,建議采用超清模式觀看, 歡迎點擊訂閱我的優(yōu)酷
public class MD5Utils {/*** 對密碼進行加密* @param password 要加密的密碼* @return 密文*/public static String digest(String password){try {//加密方式為MD5加密MessageDigest digest=MessageDigest.getInstance("MD5");// 把一個byte數(shù)組 轉(zhuǎn)換成加密后byte數(shù)組byte[] bytes = digest.digest(password.getBytes());StringBuilder sb=new StringBuilder();for(byte b:bytes){// 去掉負數(shù)int c=b&0xff; // 負數(shù)轉(zhuǎn)換成正數(shù) // 加鹽String result=Integer.toHexString(c)+3;// 把10進制的數(shù) 轉(zhuǎn)換成16進制的數(shù) 0 255if(result.length()<2){sb.append("0");// 讓十六進制數(shù) 全部都是兩位數(shù)}sb.append(result);}return sb.toString(); // 把加密后的密文返回回去} catch (NoSuchAlgorithmException e) {e.printStackTrace();// can't reachreturn "";}}MD5加密是不可逆的加密算法, 只能 明文->密文 密文是不能轉(zhuǎn)換成明文的, 銀行卡密碼都是采用MD5加密的,但是銀行卡密碼都是用md5加密后的密文再進行加密,反復幾十次,基本上保證密碼非常安全。
未完待續(xù)…..
轉(zhuǎn)載于:https://www.cnblogs.com/hehe520/p/6329907.html
總結(jié)
以上是生活随笔為你收集整理的Android教程 -09 数据的持久化存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转: jdbc连接数据库需要注意和出错的
- 下一篇: activity切换动画特效