diff options
author | Torsten Grote <t@grobox.de> | 2023-08-30 16:40:20 +0200 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-08-30 16:40:20 +0200 |
commit | f0e923cee082015e21260e20d42c88456160c7d6 (patch) | |
tree | 2feb8f0bb80198a9cda6acf8dbbab4786543ee2e | |
parent | fe694e7c69ca48ad73fa889420b056dadfebb88b (diff) | |
download | taler-android-f0e923cee082015e21260e20d42c88456160c7d6.tar.gz taler-android-f0e923cee082015e21260e20d42c88456160c7d6.tar.bz2 taler-android-f0e923cee082015e21260e20d42c88456160c7d6.zip |
[wallet] try not to instantiate TalerWalletCore more than once
-rw-r--r-- | wallet/src/main/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/wallet/src/main/AndroidManifest.xml b/wallet/src/main/AndroidManifest.xml index 96c2958..aee1525 100644 --- 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 index ae338e8..b2f1f10 100644 --- 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) |