hegaojian / MvvmHelper

:chicken::basketball:这是一个快速开发的框架,Kotlin语言开发,MVVM+Jetpack架构,封装了公共头部、界面状态管理、ViewModel、LiveData、DataBinding、ViewBinding头部刷新、加载更多、沉浸式、全局通知、丰富好用的拓展函数、RxHttp网络请求等等一系列工具
Apache License 2.0
413 stars 58 forks source link

BaseVmActivity 生命周期执行顺序问题 #16

Closed bingdu0 closed 2 years ago

bingdu0 commented 3 years ago
BaseVmActivity  中的initStatusView(savedInstanceState: Bundle?) 方法,
  findViewById<FrameLayout>(R.id.baseContentView).post {
            initView(savedInstanceState)
}

这个地方 会在oncreate onresume 执行完成之后才会执行到initView 方法。如果在onresume中做一些逻辑操作,会造成页面不更新。
hegaojian commented 3 years ago

写这延迟是因为用了LoadSir 他注册完View后会自动显示默认的Callback,如果不加延迟的话,在initview中执行loading显示,它注册完成后会自动覆盖变成success界面,你再onresume做的是 Ui逻辑操作吗,按理来说这时候已经能拿到view了

bingdu0 commented 3 years ago

写这延迟是因为用了LoadSir 他注册完View后会自动显示默认的Callback,如果不加延迟的话,在initview中执行loading显示,它注册完成后会自动覆盖变成success界面,你再onresume做的是 Ui逻辑操作吗,按理来说这时候已经能拿到view了

对,请求了一下网络数据,但是请求数据返回了才执行initView ,我现在把post 去掉了 ,直接调用initViewinitView(savedInstanceState)没发现问题啊。还有一个问题就是 viewmodel 怎么传值啊?

hegaojian commented 3 years ago

你取消延迟后,如果请求时,loading类型为 Loading_Xml 就会有不出现loading的问题, viewmodel传值,不太理解你的意思,具体你是想传值给谁

bingdu0 commented 3 years ago

你取消延迟后,如果请求时,loading类型为 Loading_Xml 就会有不出现loading的问题, viewmodel传值,不太理解你的意思,具体你是想传值给谁 post 的那个问题我再看看。viewmodel 的构造中传一个Repository。