Fixed memory leak on Intro Fragment

This commit is contained in:
MohitMali 2022-12-23 15:34:45 +05:30 committed by Kelson
parent 8bca6d3934
commit e928611f0f
2 changed files with 11 additions and 1 deletions

View File

@ -18,6 +18,8 @@
package org.kiwix.kiwixmobile.intro package org.kiwix.kiwixmobile.intro
import android.os.Build import android.os.Build
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread import androidx.test.internal.runner.junit4.statement.UiThreadStatement.runOnUiThread
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiDevice
@ -26,6 +28,7 @@ import org.junit.Before
import org.junit.Test import org.junit.Test
import org.kiwix.kiwixmobile.BaseActivityTest import org.kiwix.kiwixmobile.BaseActivityTest
import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
class IntroFragmentTest : BaseActivityTest() { class IntroFragmentTest : BaseActivityTest() {
@ -41,5 +44,8 @@ class IntroFragmentTest : BaseActivityTest() {
@Before @Before
override fun waitForIdle() { override fun waitForIdle() {
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle() UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).waitForIdle()
PreferenceManager.getDefaultSharedPreferences(context).edit {
putBoolean(SharedPreferenceUtil.PREF_SHOW_INTRO, true)
}
} }
} }

View File

@ -69,7 +69,7 @@ class IntroFragment : BaseFragment(), IntroContract.View, FragmentActivityExtens
) )
view_pager.run { view_pager.run {
adapter = IntroPagerAdapter(views) adapter = IntroPagerAdapter(views)
addOnPageChangeListener(SimplePageChangeListener(::updateView, ::handleDraggingState)) simplePageChangeListener?.let(::addOnPageChangeListener)
} }
tab_indicator.setViewPager(view_pager) tab_indicator.setViewPager(view_pager)
timer?.schedule( timer?.schedule(
@ -104,6 +104,7 @@ class IntroFragment : BaseFragment(), IntroContract.View, FragmentActivityExtens
it.setOnClickListener(null) it.setOnClickListener(null)
} }
views = emptyArray() views = emptyArray()
simplePageChangeListener = null
} }
private fun navigateToLibrary() { private fun navigateToLibrary() {
@ -135,4 +136,7 @@ class IntroFragment : BaseFragment(), IntroContract.View, FragmentActivityExtens
handler.removeCallbacksAndMessages(null) handler.removeCallbacksAndMessages(null)
timer?.cancel() timer?.cancel()
} }
private var simplePageChangeListener: SimplePageChangeListener? =
SimplePageChangeListener(::updateView, ::handleDraggingState)
} }