Skip to content

Commit fe92a68

Browse files
DrunkenCloudmikehardy
authored andcommitted
fix: memory leak in AnkiPackageImporterFragment due to retained postHandler reference
fix: memory leak in AnkiPackageImporterFragment due to retained postHandler reference fix: memory leak in AnkiPackageImporterFragment due to retained postHandler reference fix: Memory leak caused by unhandled AnkiServer Instance on deletion and removed LeakingThis Annotation
1 parent 8c14a14 commit fe92a68

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/pages/PageFragment.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,12 @@ import kotlin.reflect.KClass
3838
/**
3939
* Base class for displaying Anki HTML pages
4040
*/
41-
@Suppress("LeakingThis")
4241
open class PageFragment(
4342
@LayoutRes contentLayoutId: Int = R.layout.page_fragment,
4443
) : Fragment(contentLayoutId),
4544
PostRequestHandler {
4645
lateinit var webView: WebView
47-
private val server = AnkiServer(this).also { it.start() }
46+
private lateinit var server: AnkiServer
4847

4948
/**
5049
* A loading indicator for the page. May be shown before the WebView is loaded to
@@ -103,6 +102,7 @@ open class PageFragment(
103102
savedInstanceState: Bundle?,
104103
) {
105104
val pageWebViewClient = onCreateWebViewClient(savedInstanceState)
105+
server = AnkiServer(this).also { it.start() }
106106
webView =
107107
view.findViewById<WebView>(R.id.webview).apply {
108108
with(settings) {
@@ -151,6 +151,11 @@ open class PageFragment(
151151
?: throw IllegalArgumentException("unhandled method: $methodName")
152152
}
153153

154+
override fun onDestroyView() {
155+
server.stop()
156+
super.onDestroyView()
157+
}
158+
154159
companion object {
155160
const val PATH_ARG_KEY = "path"
156161
const val TITLE_ARG_KEY = "title"

0 commit comments

Comments
 (0)