sharedpreferencesは要素を保存できるandroid界隈ではメジャーなライブラリです。
一つのデータを永久的に保存できるので、設定時のちょっとしたデータを保存をするときに
便利です。ただ、この保存した値を管理できていないとアプリが思わぬ動きをしてしまい
バグの温床にもなりかねません。
例えば、基本情報ページの中に会員ページと非会員ページがあってその二つのページ内には共通の遷移先であるプロフィールページ
があるとします。非会員ページで設定した値を持ったままプロフィールページに移動して
その後基本情報ページに戻った後に会員ページに進んだとします。
sharedpreferences側で何も設定していないと非会員ページで設定した値を会員ページ
の中にそのまま持ってくることになり、望まないバグが発生します。
この事故を防ぐには、非会員ページから基本情報ページに戻る時にsharedpreferences
で削除設定を設ける必要があります。
削除方法は以下の通り。clear();した後にapply();で消すことができます。
SharedPreferences datas; SharedPreferences.Editor edit = datas.edit(); edit.clear(); edit.apply(); finish();
戻るボタンはアプリや機種によって様々ですが、抑えておきたい場所は三か所。
一つ目はアクションバーで設定したであろう左上にある戻るボタン。
アプリによってはないものもありますが、比較的ポピュラーで押しやすくandroid
黎明期に作られたアプリによく採用されています。
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { SharedPreferences.Editor edit = datas.edit(); edit.clear(); edit.apply(); finish(); } return true; }
二つ目は、アクティビティに設置した戻るボタン。
これはどのアプリにも絶対ある。sharedpreferencesを使っていて
メインページに複数の遷移先がある場合は採用するべき。
@OnClick(R.id.back) public void buck() { SharedPreferences.Editor edit = datas.edit(); edit.clear(); edit.apply(); finish(); }
ラストはonBackPressed();これ結構忘れがちですね。androidのライフサイクルにて
呼ばれるコールバックです。戻った時に何かしらのアクションを加えることが出来ます。
androidではほとんどの機種で左下についている三角形のボタン。
押しやすい反面強制的に前ページに戻るので、値をしっかり管理していないとバグで
事故ります。割と大事なコールバックなのでアプリとの相性を考慮して採用する
必要があります。
@Override public void onBackPressed(){ SharedPreferences.Editor edit = datas.edit(); edit.clear(); edit.apply(); finish(); }
以上が戻るボタンとsharedpreferencesを組み合わせて値を削除する方法になります。
元々のページの遷移先に二つの類似したページが存在するアプリ前提ですが、必要な
箇所は上記三点で問題ないだと思います。