public class MyFragment extends Fragment {
private MyViewModel mViewModel;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Get the ViewModelProvider
ViewModelProvider viewModelProvider = new ViewModelProvider(requireActivity());
// Get the ViewModel object
mViewModel = viewModelProvider.get(MyViewModel.class);
// Other initialization code...
return inflater.inflate(R.layout.fragment_my, container, false);
}
}
public class MyFragment extends Fragment {
private MyViewModel mViewModel;
private LiveData<String> mData;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// Get the ViewModelProvider
ViewModelProvider viewModelProvider = new ViewModelProvider(requireActivity());
// Get the ViewModel object
mViewModel = viewModelProvider.get(MyViewModel.class);
// Observe the LiveData only when necessary
if (mData == null) {
mData = mViewModel.getData();
mData.observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(String data) {
// Handle data update
}
});
}
// Other initialization code...
return inflater.inflate(R.layout.fragment_my, container, false);
}
}
kotlin
@Composable
fun MyScreenContent() {
val data = remember { mutableStateOf("") }
LaunchedEffect(Unit) {
// Perform background IO operation
withContext(Dispatchers.IO) {
// Simulate a network request
delay(1000)
data.value = "Updated data"
}
}
// UI code...
}