taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit f0e923cee082015e21260e20d42c88456160c7d6
parent fe694e7c69ca48ad73fa889420b056dadfebb88b
Author: Torsten Grote <t@grobox.de>
Date:   Wed, 30 Aug 2023 16:40:20 +0200

[wallet] try not to instantiate TalerWalletCore more than once

Diffstat:
Mwallet/src/main/AndroidManifest.xml | 2+-
Mwallet/src/main/java/net/taler/wallet/backend/BackendManager.kt | 5+++++
2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/wallet/src/main/AndroidManifest.xml b/wallet/src/main/AndroidManifest.xml @@ -48,7 +48,7 @@ <activity android:name=".MainActivity" android:exported="true" - android:launchMode="singleTop" + android:launchMode="singleInstance" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> diff --git a/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt b/wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt @@ -22,6 +22,7 @@ import kotlinx.serialization.json.Json import net.taler.qtart.TalerWalletCore import net.taler.wallet.BuildConfig import org.json.JSONObject +import java.util.concurrent.atomic.AtomicBoolean import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -40,12 +41,16 @@ class BackendManager( val json = Json { ignoreUnknownKeys = true } + @JvmStatic + private val initialized = AtomicBoolean(false) } private val walletCore = TalerWalletCore() private val requestManager = RequestManager() init { + // TODO using Dagger/Hilt and @Singleton would be nice as well + if (initialized.getAndSet(true)) error("Already initialized") walletCore.setMessageHandler { onMessageReceived(it) } if (BuildConfig.DEBUG) walletCore.setStdoutHandler { Log.d(TAG_CORE, it)