ฉันกำลังจะผ่านเรื่องนี้ codelab: https://developer.android.com/codelabs/android-lifecycles#6 มันอธิบายวิธีใช้ SavedStateHandle ใน ViewModel จะรอดระบวนการตาย ที่ constructor ของ ViewModel คือที่ด้านล่างนี้:
private SavedStateHandle mState;
public SavedStateViewModel(SavedStateHandle savedStateHandle) {
mState = savedStateHandle;
}
และ viewmodel เป็นสามารถใช้ถอยู่ในกิจกรรมตาม:
mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);
เมื่อคื ViewModel น constructor เรียกหาฉันเหรอ? และยังไงที่ Viewmodel ได้ savedStateHandle
พารามิเตอร์ของ ViewModel?
แก้ไข:
ฉันเจอคำตอบคำถามของผมองผ่านเรื่องนี้ blogpost: https://www.rockandnull.com/viewmodel-savedstate/
มันบอกว่าถ้าSavedStateHandle
เป็นเพียงคนเดียวพารามิเตอร์ของเรา viewmodel น constructor ง by viewModels
วแทนให้มันไป viewmodel โดยอัตโนมัติ
อย่างไรก็ตาม ถ้าพวกเรามีกับส่วนผสมขอกำหนดค่าพารามิเตอร์ที่ให้โดยการขึ้นแก่กันเรื่องการฉีดเฟรมเวิร์ก(Hilt)e.เจ้าหน้าที่เก็บเมื่อสองสามอื่นๆ runtime อาร์กิวเมนต์หนึ่งตัว e.จี:เลือกหมวดหมู่หมายเลขและ SavedStateHandle จะช่วยให้พวกเราทุกคนอยู่รอดที่โพรเซสความตายอยู่ใน viewmodel น constructor-แล้วพวกเราจะเป็นยังไงให้พวกนั้นพารามิเตอร์ไปที่โรงงาน?
ได้โปรดโพสต์เล็กๆตัวอย่างเช่นสำหรับความเข้าใจของฉัน