PlayAndroid icon indicating copy to clipboard operation
PlayAndroid copied to clipboard

Navigation进行页面跳转会多次执行Compose方法?

Open erichyx opened this issue 2 years ago • 1 comments

集成Navigation的时候,发现一个奇怪的事情,就是每次跳转页面Compose方法总是会执行多次。比如,首次启动应用,HomeCompose()方法会执行2次,点击跳转详情页WebViewCompose()也会执行2次,并且跳转详情的过程中,HomeCompose()又会重复执行一次。如果在底部那个Tab之间切换,Compose方法被重新执行的次数就更多了,比如从我的切换到首页,HomeCompose()则会重复执行4次。

运行项目的这个app,观察到启动首页,然后切换到我的页面,再切换回首页,这个过程首页数据一共请求了8次。 我看到代码里是直接调用ViewModel里的方法去请求数据的,由于Compose会经常发生重组,这似乎不是一个好的方式。 作者可以优化下只执行一次网络请求吗?比如从我的切换到首页的时候,这时候ViewModel里已经有缓存数据,不希望再次去进行网络请求。

erichyx avatar Jul 07 '22 07:07 erichyx

说的没错,确实会多次请求... 这是个比较大的问题,优化只执行一次网络请求容易,按你说的那样操作也是可以的,但我觉得真正需要做的是避免无意义的重组。 好久没敲Compose了,有时间我再去学习,尝试修改一下。 感谢issues

linxiangcheer avatar Jul 08 '22 10:07 linxiangcheer