Android ネットワークAPIから取得した情報をキャッシュする

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

軽量なJsonデータなどの文字列情報はSharedPreferencesを使って保存するのが便利

SharedPreferencesにアクセス
fun getCache(context: Context, key:String):String{
    val cache = PreferenceManager.getDefaultSharedPreferences(context).getString(key, "")
     return cache
}

fun createCache(context: Context, key: String, value:String){
    PreferenceManager.getDefaultSharedPreferences(context).edit().apply {
        putString(key, value)
        apply()
    }
}
使用例
val cache_key = "response"
var str = ""
if( isNetworkAvailable(context) ){
    str = //APIから取得する処理
    createCache(context, cache_key, str )
}
//オフライン時は前回取得のデータを返す
else{
    str = getCache(context, cache_key)
}

これでオンライン時には新しい情報にキャッシュを更新し、オフライン時には前回取得したキャッシュを参照できる。