草庐IT

Jetpack学习之ViewModel、Lifecycles、LiveData

全部标签

Android Jetpack 导航 - 带抽屉项的自定义操作

我正在使用新的JetpackAndroidNavigation结合抽屉布局。当在抽屉XML中使用相同的ID并结合导航图中的fragment时,一切都按预期工作。我设置了一切:overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)valnavController=findNavController(R.id.navigation_host_fragment)setupActionBarWithNavController(navController,find(R.id.drawer

android - Repository 方法在 Asynchronous Retrofit 调用中设置 LiveData 值

查看Android官方指南时ArchitectureComponents,在用Retrofit请求解释存储库层的部分中,有一段我似乎无法完全理解的代码:publicclassUserRepository{privateWebservicewebservice;  //...  publicLiveDatagetUser(intuserId){    //Thisisnotanoptimalimplementation,we'llfixitbelow    finalMutableLiveDatadata=newMutableLiveData();    webservice.getUs

android - 如何同步获取LiveData的值?

对于LiveData,RxJava的Observable中有没有类似blockingNext或者blockingSingle的同步获取值?如果不是,我怎样才能实现相同的行为? 最佳答案 您可以调用getValue()返回当前值(如果有的话)。但是,没有“在有值之前阻止”选项。大多数情况下,这是因为LiveData旨在在主应用程序线程上使用,应避免无限期阻塞调用。如果您需要“阻塞直到有一个值”,请使用RxJava并确保您在后台线程上进行观察。 关于android-如何同步获取LiveDat

Android:在 DAO 中使用 Room 数据库和 LiveData 的整洁架构

我正在尝试将整洁的架构方法应用到我的项目(Link:guideI'mcurrentlyreferencing)。我正在使用Room数据库进行本地存储,我希望它成为应用程序中的单一数据源-这意味着从网络调用收集的所有数据首先保存在数据库中,然后才传递给演示者。Room提供从其DAO返回的LiveData,这正是我需要的。不过,我也想使用存储库作为访问数据的单一方式。这是领域层(最抽象的一个)中存储库接口(interface)的示例:interfaceRepository{funfindByUsername(username:String):Listfunadd(entity:T):Lon

java - 使用 livedata 压缩 4 个或更多异步调用

有没有可能使用livedata并行运行多个异步调用的方法?假设我有4个异步调用。我想等到一切都完成,然后相应地使用所有4个调用的结果。我能想到的一种方式是这样publicclassMakeParallel{privatefinalCountDownLatchcountDown=newCountDownLatch(4);publicvoidfirstCall(){Transformation.map(makeFirstCall(),input->{if(input.isSuccessful()){countDownLatch.countDown();checkResult();}retu

android - 应该如何为具有多个字段的 Activity 实现 ViewModel

问题有一个设置屏幕(SettingsActivity),其中包含大约10个文本字段和3个按钮。在onClick上打开对话框以插入/编辑文本的文本字段将其内容保存在SharedPreferences中。这些按钮执行异步请求以检索内容并保存在其他地方。在请求期间,会显示一个对话框以通知进度。初步解决方案数据存储库基本上是SharedPreferences的包装器,它有10个getter和10个setter,每个字段一个。在get[field_name]上,DataRepository从SharedPreferences获取值,在set[field_name]上,它提交给SharedPref

android - 将 MutableLiveData 公开为 LiveData 的正确方法?

考虑以下公开MutableLiveData的方法:方法AclassThisViewModel:ViewModel(){privateval_someData=MutableLiveData(true)valsomeData:LiveDataget()=_someData}//DecompiledKotlinbytecodepublicfinalclassThisViewModelDecompiledextendsViewModel{privatefinalMutableLiveData_someData=newMutableLiveData(true);@NotNullpublicfi

android - 与 Room 和 LiveData 的多对多关系

我有一个restapi,它返回一个地点列表,其中有一个类别列表:{"id":"35fds-45sdgk-fsd87","name":"Myawesomeplace","categories":[{"id":"cat1","name":"Category1"},{"id":"cat2","name":"Category2"},{"id":"cat3","name":"Category3"}]}所以使用改造我从远程服务器获得这些模型类:dataclassCategory(varid:String,varname:String)dataclassPlace(varid:String,varn

android - Android中如何实现Livedata和Databinding?

我搜索了很多关于可观察模型和参数的信息,但我感到很困惑!1-一些模型扩展自BaseObservable并设置notifyChange();在setter中并将它们绑定(bind)到edittext,例如:app:addTextChangedListener="@{viewModel.getEmailTextWatcher}"那notifyChange()通过更改email更新文本user的参数模型。2-其中一些使用livedata用于观察和更改onChanged()中的UI方法。如何使用liveData并通过databinding更改UI?不是onChanged().什么时候onCha

android - 哪个是用于在 AppWidgetProvider 中观察 LiveData 的正确 LifeCycleOwner

我需要在AppWidgetProvider中观察一些LiveData(在onUpdate期间)。我想知道,以下哪个是更合适的LifeCycleObserver?ForeverStartLifecycleOwner(自定义)importandroid.arch.lifecycle.Lifecycle;importandroid.arch.lifecycle.LifecycleOwner;importandroid.arch.lifecycle.LifecycleRegistry;importandroid.support.annotation.NonNull;publicenumFore