【发布时间】:2020-06-06 04:30:26
【问题描述】:
我正在尝试实现分页,但每次我旋转视图模型的屏幕构造函数时都会被调用,从而触发 loadInitial 以从我的 DataSource 类中的网络获取新数据。感谢帮助
// ViewModel
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
在我的 oncreate 活动中:
TopRatedResultViewModel viewModel = ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()).create(TopRatedResultViewModel.class);
查看模型:
public class TopRatedResultViewModel extends AndroidViewModel {
private Top_Rated_Results_Repository repository;
public TopRatedResultViewModel(@NonNull Application application) {
super(application);
Log.d("moviedatabaselog", "TopRatedResultViewModel ");
repository = new Top_Rated_Results_Repository(application);
}
public LiveData<PagedList<Top_Rated_Result>> getTopRatedResultsPagedList() {
return repository.getTopRatedResultsPagedList();
}
我正在关注本教程Android paging with retrofit 但是这里使用了已弃用的 ViewModelProviders.of 并且当我在屏幕旋转构造函数后测试它时不会被调用。
【问题讨论】:
-
您是否在清单中为该特定活动添加了 configchanges,如果没有,则添加 android:configChanges="orientation|screenSize"
-
@AshishSharma ViewModel 类允许数据在配置更改后继续存在。因此,即使 onDestroy() 和 onCreate() 活动在配置更改时发生,ViewModel 的实例也不会被销毁或垃圾收集。你应该看看 jetpack 架构组件...
标签: android android-livedata android-architecture-components android-mvvm