เมื่อเร็ว ๆ นี้ฉันกำลังสำรวจสถาปัตยกรรม Android ซึ่งได้รับการแนะนำโดย Google เมื่อเร็ว ๆ นี้ จากเอกสารฉันพบสิ่งนี้:
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
}
}
กิจกรรมสามารถเข้าถึงรายการนี้ได้ดังนี้:
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
});
}
}
คำถามของฉันคือฉันจะทำสิ่งนี้:
ใน
loadUsers()
ฟังก์ชันฉันกำลังดึงข้อมูลแบบอะซิงโครนัสโดยที่ฉันจะตรวจสอบฐานข้อมูล (ห้อง) สำหรับข้อมูลนั้นก่อนหากฉันไม่ได้รับข้อมูลที่นั่นฉันจะทำการเรียก API เพื่อดึงข้อมูลจากเว็บเซิร์ฟเวอร์
ฉันจะแทรกข้อมูลที่ดึงลงในฐานข้อมูล (ห้อง) และอัปเดต UI ตามข้อมูล
แนวทางที่แนะนำในการดำเนินการนี้คืออะไร?
หากฉันเริ่มต้นService
เพื่อเรียก API จากloadUsers()
เมธอดฉันจะอัปเดตMutableLiveData<List<User>> users
ตัวแปรจากสิ่งนั้นได้Service
อย่างไร