linxiangcheer / PlayAndroid

Jetpack Compose版本的WanAndroid
163 stars 22 forks source link

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

Open erichyx opened 2 years ago

erichyx commented 2 years ago

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

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

linxiangcheer commented 2 years ago

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