草庐IT

lifecycle-viewmodel-ktx

全部标签

android - "android activity lifecycle"是否使用模板方法模式?

我相信模板方法模式涉及封装算法中的每个步骤。我认为Activity的生命周期(onCreate、onResume等)是必须被具体类覆盖的步骤。这是否意味着AndroidActivity生命周期(Activity和fragment类)符合模板设计模式,或者是否有更适合它的不同模式谢谢 最佳答案 Androidframework的构建方式肯定是遵循模板模式,这是它的长处也是它的短处。因为这种模式建议只实现模块的某些部分,所以很容易获得快速简单的结果,而无需付出太多努力。但是,由于它是基于继承的,一旦您开始考虑扩展框架或处理交叉关注点模式

android - 为 fragment 再次创建 ViewModel

我在MainFragment中创建View模型:@OverridepublicvoidonActivityCreated(@NullableBundlesavedInstanceState){super.onActivityCreated(savedInstanceState);...MainViewModelmainViewModel=ViewModelProviders.of(this).get(MainViewModel.class);...}当用户选择项目然后导航到详细信息fragment时,此事务将添加到后台堆栈。getFragmentManager().beginTrans

android - 如何在不使用数据绑定(bind)的情况下让 EditText 观察 ViewModel 的 LiveData 并将用户输入转发到 ViewModel

我正在尝试想出一种方法让EditText更新ViewModel的数据并同时观察该数据的任何更改(例如,通过操作数据库带来的更改)。有没有办法在不使用数据绑定(bind)库的情况下做到这一点?我在简单地使用MutableLiveData时面临的主要问题如下:当用户在EditText中输入文本时,TextWatcher会触发ViewModel以更新其数据,这反过来会将新文本设置到MutableLiveData对象。因为EditText正在观察LiveData,所以会触发onChange并相应地设置EditText的文本,这又会再次触发TextWatcher,从而形成无限循环。

当其主机 Activity 不在 Activity 堆栈的顶部并且设备旋转时,Android ViewModel 重新创建

我处于以下场景:我有一个包含ViewModel的OnboardActivity,我可以多次旋转这个OnboardActivity和ViewModel跨配置更改持续存在而不会出现问题。但是,如果我使用startActivityForResult(...)在这个(OnboardActivity)之上启动另一个Activity(FirebaseAuthActivity),然后在FirebaseAuthActivity中旋转设备并按下后退按钮。当OnboardActivity被带到堆栈的顶部时,它会再次重新创建ViewModel实例。这是ViewModel在架构组件中的正常行为吗?当Onboa

android - RELEASE配置下MvvmCross MvxException "Failed to construct and initialize ViewModel"

我正在使用MvvmCross开发Xamarin.Android应用程序。每次我在RELEASE配置下启动应用程序时,它都会在启动时崩溃并出现以下错误:Cirrious.CrossCore.Exceptions.MvxException:FailedtoconstructandinitializeViewModelfortypeDroidApp.Core.ViewModels.MainViewModelfromlocatorMvxDefaultViewModelLocator-checkMvxTraceformoreinformation此应用程序在DEBUG配置下运行良好。在我更新代码

在屏幕旋转时重新创建 Android ViewModel

我发现了一个架构组件ViewModel没有被保留的情况——简而言之,它是这样的:Activity启动并创建ViewModel实例Activity置于后台设备屏幕旋转Activity回到前台调用ViewModel的onCleared方法并创建新对象在这种情况下,我的ViewModel实例被破坏是Android的正常行为吗?如果是这样,是否有任何推荐的保持其状态的解决方案?我能想到的一种方法是在调用onCleared后保存它,但是,它也会在Activity实际完成时保持状态。另一种方法是使用onRestoreInstanceState但它会在每次屏幕旋转时触发(不仅是在应用程序处于后台时)

java - 在 Viewmodel 中访问 BroadCastReceiver

我正在努力选择将数据从broadcastReceiver传递到ViewModel的正确方法,然后从那里将数据传递到我的存储库并更新LiveData。我使用FCM推送通知并拥有使用ActivityLifecycle的本地broadCastReceiver。我发现从BroadcastReceiver访问ViewModel是不好的做法,但不确定为什么?如果我管理broadcastReceiver的生命周期,它应该不会引起任何问题...那么将接收到的数据从FCM传递到我的存储库的MediatorLiveData的最佳方法是什么?我使用MediatorLiveData,因为我添加了不同的实时数据

安卓 fragment : Lifecycle method *always* called when fragment is displayed?

每当向用户显示fragment时,我都需要执行一些代码。通过API查看我能看到的最接近的钩子(Hook)方法是onResume。但是,从我的代码调试来看,当用户选择后退按钮返回到先前显示的fragment时,似乎不会调用onResume。只是为了澄清我所看到的行为:我有一个“父”Activity,它在ActionBar中配置选项卡...和​​2个fragmentF1和F2。用户选择一个选项卡,F1被加载到Activity中。按下按钮后,用户可以导航至F2。这不是一个单独的选项卡...F2已交换到布局中。添加日志语句,我可以看到当用户选择F2上的后退按钮时,会发生以下情况......1)

android - 无法创建 ViewModel 类的实例(无法启动 Activity ComponentInfo)

我在我的项目中使用MVVM、Retrofit、LiveData,但在我看到这些链接之前出现此错误CannotcreateaninstanceofcustomViewModelCannotcreateaninstanceofclassViewModel错误java.lang.RuntimeException:UnabletostartactivityComponentInfo{ir.orangehat.movieinfo/ir.orangehat.movieinfo.application.home.HomeActivity}:java.lang.RuntimeException:Can

android - Activity和Fragment Lifecycle,onResume是不是一个接一个触发?

我想知道当用户从HomeScreen返回到Activity时正确的顺序是什么。会不会先执行Activity的onResume(),然后再执行Fragment的onResume()?它是按顺序执行,还是同时执行?我在Fragment的onResume()中添加了一些代码,但在Activity的onResume()之后似乎没有触发。 最佳答案 IamwonderingwhattheproperordergoeswhenauserreturnstoanActivityfromtheHomeScreen.Activity的onResume(