From 54afadb13675787d96642ef3644736467486d59b Mon Sep 17 00:00:00 2001 From: darken Date: Sun, 9 Nov 2025 08:55:18 +0100 Subject: [PATCH] fix: Prevent memory leak in WidgetConfigurationActivity Uses the application context instead of the activity context when updating the widget. This avoids leaking the activity instance if the update operation outlives the configuration screen. --- .../capod/main/ui/widget/WidgetConfigurationActivity.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationActivity.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationActivity.kt index b080ee38..70d7ff71 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationActivity.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationActivity.kt @@ -1,12 +1,14 @@ package eu.darken.capod.main.ui.widget import android.appwidget.AppWidgetManager +import android.content.Context import android.content.Intent import android.os.Bundle import androidx.activity.enableEdgeToEdge import androidx.activity.viewModels import androidx.core.view.isVisible import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.qualifiers.ApplicationContext import eu.darken.capod.R import eu.darken.capod.common.EdgeToEdgeHelper import eu.darken.capod.common.debug.logging.log @@ -24,6 +26,7 @@ class WidgetConfigurationActivity : Activity2() { @Inject lateinit var profileAdapter: WidgetProfileSelectionAdapter @Inject lateinit var upgradeRepo: UpgradeRepo + @ApplicationContext @Inject lateinit var appContext: Context private var widgetId: Int = AppWidgetManager.INVALID_APPWIDGET_ID @@ -101,10 +104,10 @@ class WidgetConfigurationActivity : Activity2() { val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId) setResult(RESULT_OK, resultValue) - val appWidgetManager = AppWidgetManager.getInstance(this@WidgetConfigurationActivity) + val appWidgetManager = AppWidgetManager.getInstance(appContext) WidgetProvider.updateWidget( - context = this@WidgetConfigurationActivity, + context = appContext, appWidgetManager = appWidgetManager, widgetId = widgetId )