在fragment onpause时停止livedata的观察
时间: 2024-03-10 14:45:22 浏览: 12
可以在 Fragment 的 `onPause()` 方法中调用 `LiveData` 的 `removeObservers()` 方法来停止观察。具体实现如下:
```java
public class MyFragment extends Fragment {
private MyViewModel mViewModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewModel = new ViewModelProvider(this).get(MyViewModel.class);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mViewModel.getLiveData().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(String s) {
// do something
}
});
}
@Override
public void onPause() {
super.onPause();
mViewModel.getLiveData().removeObservers(getViewLifecycleOwner());
}
}
```
在 `onPause()` 方法中调用 `removeObservers()` 方法,可以停止对 `LiveData` 的观察,避免在 Fragment 不可见时浪费资源。