2019-11-15

保存數(shù)據(jù):

第一種方法

第一步?//定義sp變量

private static final String? Temp_Sms="Temp_Sms";


第二步 保存數(shù)據(jù)在onStop方法處理

protected void onStop(){

super.onStop();

? ? SharedPreferences.Editor editor=getSharedPreferences(Temp_Sms,MODE_PRIVATE).edit();

? ? ? ? editor.putString("sms_content",editTextMsg.getText().toString());

? ? ? ? editor.apply();

}


第三步 取值調(diào)用展示

SharedPreferences sp = getSharedPreferences(Temp_Sms,MODE_PRIVATE);

String content=sp.getString("sms_content", "");

editTextMsg.setText(content);


第二種方法


/**

* 用戶數(shù)據(jù)操作類

*/

public class UserDao {

private static StringUserDaoTable ="Jason";? //這里命名中間隨意

? private static StringUserInfoObject ="UserInfoObject";

? /**

* 獲得用戶名

*

? ? * @param context

? ? * @return

? ? */

? public static StringgetUserName(Context context) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? String username = preferences.getString("UserName", "");

? ? ? return username;

? }

/**

* 獲得密碼

*

? ? * @param context

? ? * @return

? ? */

? public static StringgetPassWord(Context context) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? String password = preferences.getString("PassWord", "");

? ? ? return password;

? }

/**

* 是否記住密碼

*

? ? * @param context

? ? * @return

? ? */

? public static boolean getRememberPassWord(Context context) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? boolean isRemember = preferences.getBoolean("RememberPassWord", false);

? ? ? return isRemember;

? }

/**

* 保存是否保存密碼

*

? ? * @param context

? ? * @param username

? ? * @param password

? ? */

? public static void saveRememberPassWord(Context context, boolean isRemember) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? Editor editor = preferences.edit();

? ? ? editor.putBoolean("RememberPassWord", isRemember);

? ? ? editor.commit();

? }

/**

* 保存密碼

*

? ? * @param context

? ? * @param username

? ? * @param password

? ? */

? public static void saveUserPassWord(Context context, String password) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? Editor editor = preferences.edit();

? ? ? editor.putString("PassWord", password);

? ? ? editor.commit();

? }

/**

* 保存用戶名密碼

*

? ? * @param context

? ? * @param username

? ? * @param password

? ? */

? public static void saveUserNamePassWord(Context context, String username, String password) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? Editor editor = preferences.edit();

? ? ? editor.putString("UserName", username);

? ? ? editor.putString("PassWord", password);

? ? ? editor.commit();

? }

// /**

//? * 保存用戶信息

//? *

//? * @param context

//? * @param userinfo

//? */

// public static void saveUserInfo(Context context, String userinfo) {

//? ? SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

//? ? Editor editor = preferences.edit();

//? ? editor.putString("UserInfo", userinfo);

//? ? editor.commit();

// }

? /**

* 保存用戶信息對象

*

? ? * @param context

? ? * @param userinfo

? ? */

? public static void saveUserInfo(Context context, LoginUser userinfo) {

PreferencesService service =new PreferencesService(context);

? ? ? service.saveObject(UserInfoObject, userinfo);

? }

/**

* 獲取用戶信息對象

*

? ? * @param context

? ? * @return

? ? */

? public static LoginUsergetUserInfoModel(Context context) {

LoginUser model =null;

? ? ? PreferencesService service =new PreferencesService(context);

? ? ? model = (LoginUser) service.deSerialization(UserInfoObject);

? ? ? return model;

? }

/**

* 獲取用戶信息

*

? ? * @param context

? ? * @return

? ? */

? public static StringgetUserInfo(Context context) {

SharedPreferences preferences = context.getSharedPreferences(UserDaoTable, Activity.MODE_PRIVATE);

? ? ? return preferences.getString("UserInfo", "");

? }

}



PreferencesService文件在下面

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.StreamCorruptedException;

import java.util.HashMap;

import java.util.Map;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.util.Base64;

/**

* 輕量級保存工具

*/

public class PreferencesService {

private static SharedPreferencespreferences;

? /** 構(gòu)造器(無參數(shù)) */

? public PreferencesService() {

}

/** 構(gòu)造器(有參數(shù)) */

? public PreferencesService(Context context) {

if (null ==preferences) {

preferences = android.preference.PreferenceManager.getDefaultSharedPreferences(context);

? ? ? }

}

/** 保存字段 */

? public void save(String key, String value) {

Editor edit =preferences.edit();

? ? ? /** 數(shù)據(jù)是放在內(nèi)存中的 */

? ? ? edit.putString(key, value);

? ? ? /** 提交方法怜珍,把內(nèi)存中的數(shù)據(jù)提交到文件中 */

? ? ? edit.commit();

? }

/** 根據(jù)key值獲取value值 */

? public StringgetValue(String key, String defaltValue) {

String object =preferences.getString(key, defaltValue);

? ? ? return object;

? }

/** 保存字段 */

? public void save(String key, Boolean value) {

Editor edit =preferences.edit();

? ? ? /** 數(shù)據(jù)是放在內(nèi)存中的 */

? ? ? edit.putBoolean(key, value);

? ? ? /** 提交方法读串,把內(nèi)存中的數(shù)據(jù)提交到文件中 */

? ? ? edit.commit();

? }

/** 根據(jù)key值獲取value值 */

? public boolean getValue(String key) {

boolean object =preferences.getBoolean(key, false);

? ? ? return object;

? }

/** 獲取保存的字段 */

? public MapgetPreferences(String... param) {

Map map =new HashMap();

? ? ? for (int i =0; i < param.length; i++) {

map.put(param[i], preferences.getString(param[i], ""));

? ? ? }

return map;

? }

/** 將要保存的hashmap集合轉(zhuǎn)化成字符串 */

? private StringSceneList2String(HashMap hashmap)throws IOException {

/** 實例化一個ByteArrayOutputStream對象攒霹,用來裝載壓縮后的字節(jié)文件。 */

? ? ? ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();

? ? ? /** 然后將得到的字符數(shù)據(jù)裝載到ObjectOutputStream */

? ? ? ObjectOutputStream objectOutputStream =new ObjectOutputStream(byteArrayOutputStream);

? ? ? /** writeObject 方法負(fù)責(zé)寫入特定類的對象的狀態(tài)却盘,以便相應(yīng)的 readObject 方法可以還原它 */

? ? ? objectOutputStream.writeObject(hashmap);

? ? ? /** 最后,用Base64.encode將字節(jié)文件轉(zhuǎn)換成Base64編碼保存在String中 */

? ? ? String SceneListString =new String(Base64.encode(byteArrayOutputStream.toByteArray(), Base64.DEFAULT));

? ? ? /** 關(guān)閉objectOutputStream */

? ? ? objectOutputStream.close();

? ? ? return SceneListString;

? }

/** 將字符串轉(zhuǎn)化成hashmap集合 */

? private HashMapString2SceneList(String SceneListString)throws StreamCorruptedException, IOException, ClassNotFoundException {

byte[] mobileBytes = Base64.decode(SceneListString.getBytes(), Base64.DEFAULT);

? ? ? ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(mobileBytes);

? ? ? ObjectInputStream objectInputStream =new ObjectInputStream(byteArrayInputStream);

? ? ? @SuppressWarnings("unchecked")

HashMap SceneList = (HashMap) objectInputStream.readObject();

? ? ? objectInputStream.close();

? ? ? return SceneList;

? }

/** 存儲集合對象 */

? public boolean putHashMap(String key, HashMap hashmap) {

Editor editor =preferences.edit();

? ? ? try {

String liststr = SceneList2String(hashmap);

? ? ? ? editor.putString(key, liststr);

? ? ? }catch (IOException e) {

return false;

? ? ? }

return editor.commit();

? }

/** 獲取集合對象 */

? public HashMapgetHashMap(String key) {

String liststr =preferences.getString(key, "");

? ? ? try {

return String2SceneList(liststr);

? ? ? }catch (Exception e) {

return null;

? ? ? }

}

/** 反序列化對象(獲取序列化對象) */

? public ObjectdeSerialization(String key) {

String seria =preferences.getString(key, null);

? ? ? Object object;

? ? ? try {

String redStr = java.net.URLDecoder.decode(seria, "UTF-8");

? ? ? ? ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(redStr.getBytes("ISO-8859-1"));

? ? ? ? ObjectInputStream objectInputStream =new ObjectInputStream(byteArrayInputStream);

? ? ? ? object = objectInputStream.readObject();

? ? ? ? objectInputStream.close();

? ? ? ? byteArrayInputStream.close();

? ? ? }catch (Exception e) {

return null;

? ? ? }

return object;

? }

/** 序列化對象 */

? private Stringserialize(Object object) {

ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();

? ? ? ObjectOutputStream objectOutputStream;

? ? ? String serStr;

? ? ? try {

objectOutputStream =new ObjectOutputStream(byteArrayOutputStream);

? ? ? ? objectOutputStream.writeObject(object);

? ? ? ? serStr = byteArrayOutputStream.toString("ISO-8859-1");

? ? ? ? serStr = java.net.URLEncoder.encode(serStr, "UTF-8");

? ? ? ? objectOutputStream.close();

? ? ? ? byteArrayOutputStream.close();

? ? ? }catch (IOException e) {

return null;

? ? ? }

return serStr;

? }

/** 保存序列化對象 */

? public boolean saveObject(String key, Object object) {

String strObject = serialize(object);

? ? ? Editor edit =preferences.edit();

? ? ? edit.putString(key, strObject);

? ? ? return edit.commit();

? }

}


調(diào)用保存方法

boolean checked = UserDao.getRememberPassWord(this);

remember_password.setChecked(checked);

remember_password.setOnCheckedChangeListener((buttonView, isChecked) -> UserDao.saveRememberPassWord(LoginActivity.this, isChecked));

if (remember_password.isChecked()) {

UserDao.saveUserNamePassWord(LoginActivity.this, username, password);

}else {

UserDao.saveUserNamePassWord(LoginActivity.this, username, "");

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宏榕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侵佃,老刑警劉巖麻昼,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異馋辈,居然都是意外死亡抚芦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉抡,“玉大人尔崔,你說我怎么就攤上這事∪烀瘢” “怎么了季春?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長轴捎。 經(jīng)常有香客問我鹤盒,道長,這世上最難降的妖魔是什么侦副? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任侦锯,我火速辦了婚禮,結(jié)果婚禮上秦驯,老公的妹妹穿的比我還像新娘尺碰。我一直安慰自己,他們只是感情好译隘,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布亲桥。 她就那樣靜靜地躺著,像睡著了一般固耘。 火紅的嫁衣襯著肌膚如雪题篷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天厅目,我揣著相機與錄音番枚,去河邊找鬼。 笑死损敷,一個胖子當(dāng)著我的面吹牛葫笼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拗馒,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼路星,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诱桂?” 一聲冷哼從身側(cè)響起洋丐,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挥等,沒想到半個月后垫挨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡触菜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年九榔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡哲泊,死狀恐怖剩蟀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情切威,我是刑警寧澤育特,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站先朦,受9級特大地震影響缰冤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喳魏,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一棉浸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刺彩,春花似錦迷郑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畦攘,卻和暖如春霸妹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背知押。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工叹螟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朗徊。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓首妖,卻偏偏與公主長得像偎漫,于是被迫代替她去往敵國和親爷恳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容