最近因爲工作上的原因做了一個多賬號登陸,很簡單的東西做的並不是很好,所以就需要把這個東西重新捋一下,重新學習一下。
具體就是跟QQ的的多賬號登陸差不多,我的基本思路其實就是用sharedpreference,當然數據庫是肯定可以的。
直接說思路,因爲是多個賬號,肯定需要一個數組或者集合來盛放,而且因爲是要保存賬號和集合兩個東西,就需要map
private SharedPreferences sPreferences;
private Map<String, String> map;
讀取賬號和密碼
// 讀取已經記住的用戶名與密碼
sPreferences = getSharedPreferences("session", MODE_PRIVATE);
map = (Map<String, String>) sPreferences.getAll();
List<String> list = new ArrayList<String>();
for (int i = 0; i < (map.size() / 2); i++) {
String name = sPreferences.getString("name" + i, "");
list.add(name);
}
然後讀取賬號密碼就該保存下來了
private void saveUser() {
// 若是第二次打開軟件時,將map在size賦給i,若是不是,則i只要實現i++
if (i == 0) {
i = map.size() / 2;
}
String name = etUserName.getText().toString().trim();
String pwd = etPassword.getText().toString().trim();
// 迭代器遍歷map
Set<Entry<String, String>> entryset = map.entrySet();
Iterator iter = entryset.iterator();
while (iter.hasNext()) {
//迭代查詢爲false就是證明沒有保存過用戶map爲空
if (iter.hasNext()) {
Entry<String, String> entry = (Entry<String, String>) iter.next();
if (entry.toString().contains(name)) {
isSave = false;
break;
} else {
isSave = true;
}
}
}
if (isSave.equals(true)) {
if (!"".equals(name) && !"".equals(pwd)) {
sPreferences.edit().putString("name" + i, name)
.putString("pwd" + i, pwd).commit();
i++;
}
}
}
這裏有個關於是否會重複保存多個想通賬號的問題,在裏面迭代的時候會處理這個問題,總結下來就是三步
- 創建一個sharedpreference來保存你想保存的東西
- 讀取你要保存的東西
- 保存你想保存的東西
終於又寫了一篇博客,抓緊學習,抓緊進步