hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.15k stars 614 forks source link

viewpager2+Fragment 内存泄漏 #5

Closed Wudelin closed 4 years ago

hegaojian commented 4 years ago

收到,这几天在忙面试,没怎么有时间,后面有空会去修复掉

Wudelin commented 4 years ago

你的项目是Titlebar内存泄漏哦!我替换成你的NavHostFragment之后就正常了

hegaojian commented 4 years ago

这个titlebar泄漏 我想了很久还是没有解决,不知道你是否有解决方案

Wudelin commented 4 years ago

你在Fragment中设置ac的toolbar为mToolbar: toolbar.run { //设置menu 关键代码 val appCompatActivity = activity as AppCompatActivity? appCompatActivity?.setSupportActionBar(this) initClose(showTitle) { hideSoftKeyboard(activity) Navigation.findNavController(it).navigateUp() } }

即activity持有Fragment中toolbar的引用,销毁Fragment时,由于Ac持有Frag的引用,导致Frag无法被回收,造成内存泄漏

解决:(Fragment销毁时,设置ac的toolbar为null) `

override fun onDestroyView() {
    super.onDestroyView()
    (activity as AppCompatActivity?)!!.setSupportActionBar(null)
}

`

hegaojian commented 4 years ago

刚试了一下,貌似是可以了,为你疯狂打call :smile::smile::smile: