Baru-baru ini saya menjelajahi Arsitektur Android, yang baru-baru ini diperkenalkan oleh google. Dari Dokumentasi saya menemukan ini:
public class MyViewModel extends ViewModel {
private MutableLiveData<List<User>> users;
public LiveData<List<User>> getUsers() {
if (users == null) {
users = new MutableLiveData<List<Users>>();
loadUsers();
}
return users;
}
private void loadUsers() {
// do async operation to fetch users
}
}
aktivitas dapat mengakses daftar ini sebagai berikut:
public class MyActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
model.getUsers().observe(this, users -> {
// update UI
});
}
}
Pertanyaan saya adalah, saya akan melakukan ini:
dalam
loadUsers()
fungsi saya mengambil data secara asynchronous di mana saya pertama-tama akan memeriksa database (Room) untuk data ituJika saya tidak mendapatkan data di sana, saya akan membuat panggilan API untuk mengambil data dari server web.
Saya akan memasukkan data yang diambil ke dalam database (Room) dan memperbarui UI sesuai datanya.
Apa pendekatan yang direkomendasikan untuk melakukan ini?
Jika saya memulai Service
untuk memanggil API dari loadUsers()
metode, bagaimana saya bisa memperbarui MutableLiveData<List<User>> users
variabel dari itu Service
?