Tag: android architecture lifecycle

请使用“首次离线aproach”解释android架构。

我的应用程序架构,很常见: 例如,如果我有实体列表,请解释我 @Entity(tableName = TABLE_NAME) class Item constructor( @PrimaryKey(autoGenerate = false) var id: Long = 0L, @TypeConverters(ListToStringConverter::class) var eventDescription: List = emptyList(), @TypeConverters(DateConverter::class) var date: Date = Date(), var rate: Int ?= null) 图片说明: 目前我做(根据上图): 来自Repository的mLiveData getLiveData 回调refreshFromDataBase() DataBase的mLiveData.addSource的LiveData – 导致Android View快速更新的原因 回调refreshFromNetwork() rest更新DatabaseTable 数据库插入导致LiveData添加将更改推送到视图 问题的提出 5步的最佳做法是什么?一旦有新数据出现,我必须用最新的数据取代旧数据? 目前我正在使用RxJava,Room,Kotlin和我在步骤3中使用嵌套的Rx.Single这是非常丑陋的代码。 喜欢 disposable = usecase.getDataFromNetwork() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeBy(onSuccess […]

用于ViewModels的自定义半广义工厂

我想创建一个广义的ViewModelProvider.Factory来实例化我的ViewModels class BundledAppFactory(private var bundle: AppParameterBundle) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { Log.d(“Factory”, “Creating ${modelClass.canonicalName}”) Log.d(“Factory”, “${modelClass.canonicalName} has ${modelClass.constructors.size} constructors and ${modelClass.declaredConstructors.size} declaredConstructors”) modelClass.constructors.forEach { Log.d(“Factory”, “Constructor: $it”) } return when { AppViewModel::class.java.isAssignableFrom(modelClass) -> modelClass.getDeclaredConstructor(AppParameterBundle::class.java).newInstance(bundle) AppTeamUserViewModel::class.java.isAssignableFrom(modelClass) -> modelClass.getDeclaredConstructor(AppTeamUserParameterBundle::class.java).newInstance(bundle) AppTeamUserHuntIdViewModel::class.java.isAssignableFrom(modelClass) -> modelClass.getDeclaredConstructor(AppTeamUserHuntIdParameterBundle::class.java).newInstance(bundle) AppStringViewModel::class.java.isAssignableFrom(modelClass) -> modelClass.getDeclaredConstructor(AppStringParameterBundle::class.java).newInstance(bundle) else -> super.create(modelClass) } } } 这些是我的包: open […]

Android LiveData:MutableData从不处于活动状态

我有以下ViewModel : class SignInViewModel @Inject constructor(val api: BillingApi) : ViewModel() { val googleApiClient: MutableLiveData<GoogleApiClient> = MutableLiveData() } 在我的Activity.onCreate(onSavedInstanceState: Bundle?)我有: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) … signInViewModel = ViewModelProviders.of(this) .get(SignInViewModel::class.java) signInViewModel.googleApiClient.observe(this, Observer<GoogleApiClient?> { … // here never gets trigged } 后来我的代码我有signInViewModel.googleApiClient.value = it 。 在这一点上(点击按钮后,所以我处于恢复状态),我期待的LiveData触发我的观察员,但事实并非如此 。 在调试时,我注意到我的MutableLiveData从来没有active状态。 我究竟做错了什么? 请,我知道我在示例中使用的是一个GoogleApiClient实例,它应该使用GoogleApiClient和GoogleApiClient进行初始化,但这不是问题。 我想动态地设置它,让我的观察者被触发。 编辑 :添加调用setValue的代码 signInViewModel.someMethod(this) .observeOn(AndroidSchedulers.mainThread()) .subscribe(Consumer […]