summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-08-30 16:40:20 +0200
committerTorsten Grote <t@grobox.de>2023-08-30 16:40:20 +0200
commitf0e923cee082015e21260e20d42c88456160c7d6 (patch)
tree2feb8f0bb80198a9cda6acf8dbbab4786543ee2e
parentfe694e7c69ca48ad73fa889420b056dadfebb88b (diff)
downloadtaler-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.xml2
-rw-r--r--wallet/src/main/java/net/taler/wallet/backend/BackendManager.kt5
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)