Offline Cache dengan Hawk + Retrofit di Android

Setelah baca baca dokumentasi AdonisJS mengenai Caching dengan Redis, saya kepikiran untuk melakukan cache response dari API. Berikut contoh caching pada dokumentasi Adonis JS

Inspirasi

Logikanya cukup sederhana.

  1. Chek apakah sudah ada local cache (dalam hal ini adalah redis)
  2. Jika sudah ada, maka return data dari local cache
  3. Jika belum ada, maka query ke database, kemudian return data, dan simpat hasil query ke dalam cache

Implementasi

Pada proyek android yang sedang saya kerjakan (Native Java) saya sudah menggunakan library Retrofit untuk API dan Hawk sebagai Key value based Storage. Jadi setelah melihat potongan kode di atas, saya terinspirasi untuk mengimplementasikan di kodingan.

Berikut ini contoh implementasi Retrofit + Hawk

Logikanya juga mirip seperti di atas tadi, tapi dengan sedikit improvisasi.

  1. Set loading di View view.setLoading(true);
  2. Check apakah ada local cache dengan Hawk.contains(cacheKey)
  3. Jika cache ditemukan, maka langsung lempar data ke View view.onDataLoaded(cachedData);. Namun view tetap loading, sehingga data sudah muncul terlebih dahulu (local cache)
  4. Kemudian lakukan query ke REST API endpoint dengan Retrofit API Interface melalui Model
  5. Setelah request API berhasil, update data yang ada di View
  6. Simpan / update local cache dari hasil request

Atau, skenario di atas bisa disesuaikan dengan kebutuhan aplikasi kamu. Misal, kalau dari data local sudah ada maka tidak perlu request lagi ke server. Namun perlu waspada, untuk data sensitif seperti harga, diskon sebaiknya untuk selalu melakukan update local cache.