Jika struktur firebase Anda tidak terlalu rumit, Anda juga dapat membuat antarmuka yang mendefinisikan metode seperti
void addData(Data data);
Data getData(long id);
void editData(Data data, long id);
void deleteData(long id);
kemudian buat 2 kelas yang mengimplementasikan antarmuka itu, satu menggunakan Firebase dan yang lain menggunakan SQLite.
DatabaseImplementation
FirebaseImplementation
Di dalam implementasi Firebase, Anda akan memublikasikan data seperti biasa, dan memublikasikan satu node baru ke sesuatu seperti root/requestUpdate/userId/push/
dan push akan berisi informasi tentang di mana Anda meminta pembaruan, dan deviceId . apa menerbitkannya.
Kemudian ikat ValueEventListener ke simpul yang disebutkan, dan jika mendapat anak baru, lihat apakah deviceId sama atau tidak. Jika tidak, miliki FirebaseImplementation getData menggunakan informasi yang Anda dapatkan, lalu gunakan DatabaseImplementation , untuk menambahkanData .
Itu akan memastikan bahwa setiap kali perubahan dibuat, klien lain yang masuk akan tahu untuk memperbarui firebase-nya. Jika klien tidak online, saat berikutnya dia online, dia akan melakukannya sebagai pemicu ValueEventListener saat dilampirkan. Pastikan untuk mengulang semua pembaruan yang diminta untuk memastikan semuanya dibuat. Simpan juga tombol tekan dari setiap pembaruan yang Anda selesaikan di database lokal sehingga Anda tidak akan memperbarui lebih dari sekali.
Pada dasarnya firebase akan selalu up to date dan menyimpan setiap perubahan yang dibuat pengguna pada node terpisah yang didengarkan oleh semua klien.
Jelas solusi ini masih memiliki banyak masalah yang perlu Anda perbaiki, seperti mencari tahu kapan harus menghapus node requestUpdate. Logikanya setelah setiap pengguna disinkronkan tetapi bagaimana Anda menentukan ini? ...
Untuk login pertama, Anda perlu menulis populateDatabaseFromFirebase() metode yang akan melakukan banyak getDatas dan addDatas. Bagaimana Anda melakukannya akan tergantung pada tampilan DB Anda. Anda kemudian akan menyimpan bahwa pengguna telah masuk dengan SharedPreferences dan UID firebase .
Itu semua dikatakan, ini hanya akan berfungsi jika firebase Anda cukup datar. Jika Anda memiliki database yang kompleks, maka semuanya menjadi jauh lebih rumit dan terjerat dan mungkin ada baiknya melihat ke perpustakaan eksternal.