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.
- Chek apakah sudah ada local cache (dalam hal ini adalah redis)
- Jika sudah ada, maka return data dari local cache
- 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.
- Set loading di View
view.setLoading(true);
- Check apakah ada local cache dengan
Hawk.contains(cacheKey)
- Jika cache ditemukan, maka langsung lempar data ke View
view.onDataLoaded(cachedData);
. Namun view tetap loading, sehingga data sudah muncul terlebih dahulu (local cache) - Kemudian lakukan query ke REST API endpoint dengan Retrofit API Interface melalui Model
- Setelah request API berhasil, update data yang ada di View
- 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.