說到本地儲存,一向是百家爭鳴
不管是iOS(有原生的UserDefault、NSKeyedArchiver、CoreData或是第三方的FMDB、Realm)
或是Android都有一樣的情況
光要開個資料庫 (SQLite),又是 SQLiteOpenHelper 、又是ContentProvider、又是Uri 的,好煩哪!於是,不少 persistence 的第三方類別庫因應而生,如 ActiviteAnroid、DBFlow、greenDAO、SugerORM、Realm、Requery 等等族繁不及備載
.
.
.
2017 年 5 月,Google I/O ’17發佈了 Room,至此 persistence 歸於一統
- 綠豆湯
不過今天要沒有要開房間XD
而是要講講最基本的SharedPreferences
就跟我們的UserDefault一樣☘️☘️☘️是最輕量簡單方便的
(我覺得'波粉神似'好難念,連Google也都同意我的說法XD)
叔叔是為了示範才用來存帳密,好孩子不要學喔我絕對不會說公司專案也是這樣存的
//讀取
//本來是想用PreferenceManager的,但已經棄用就算了
SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
//跟intent的getExtra一樣,第二個參數是預設值
String password = sharedPreferences.getString(usernameEditText.getText().toString(),"");
//寫入
SharedPreferences.Editor spEditor = sharedPreferences.edit();
spEditor.putString(usernameEditText.getText().toString(), passwordEditText.getText().toString());//Key-Value形式
spEditor.commit();
Intent intent = new Intent();
intent.putExtra("isBackByLoginSuccess",true);
setResult(Activity.RESULT_OK, intent);
finish();
這樣對方的onActivityResult就會收到你的心意了(羞)
4. 還有用到字串比較,跟我們一樣不能直接用==☘️☘️☘️
建議使用TextUtils.equals("A字串","B字串")
因為他們用A字串.equals("B字串")的時候,如果A字串是null會閃退
⚠️⚠️⚠️
5. 題外話:不知道為什麼我用到Toast最後都會忘記.show.....
6. 結論,今天的範例一樣是用內建的Activity Gallery生的
不過一個簡單的登入可以寫得這麼複雜我也是醉了
可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️
如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~