diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index 17b20dbe41..f0a79eafeb 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -175,7 +175,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac override fun onDestroy() { store.dispatch(NavigationAction.ActivityDestroyed(WeakReference(this))) intentProcessor.removeAll() - cardSdkLifecycleObserver.onDestroy() + cardSdkLifecycleObserver.onDestroy(this) super.onDestroy() } diff --git a/data/card/src/main/java/com/tangem/data/card/sdk/CardSdkLifecycleObserver.kt b/data/card/src/main/java/com/tangem/data/card/sdk/CardSdkLifecycleObserver.kt index f5f6781392..212ff3a8bf 100644 --- a/data/card/src/main/java/com/tangem/data/card/sdk/CardSdkLifecycleObserver.kt +++ b/data/card/src/main/java/com/tangem/data/card/sdk/CardSdkLifecycleObserver.kt @@ -12,6 +12,6 @@ interface CardSdkLifecycleObserver { /** Callback of creating activity [context] */ fun onCreate(context: Context) - /** Callback of destroying activity */ - fun onDestroy() + /** Callback of destroying activity [context] */ + fun onDestroy(context: Context) } \ No newline at end of file diff --git a/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt b/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt index 993a613c73..b536029bcb 100644 --- a/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt +++ b/data/card/src/main/java/com/tangem/data/card/sdk/DefaultCardSdkProvider.kt @@ -7,6 +7,7 @@ import com.tangem.common.CardFilter import com.tangem.common.card.FirmwareVersion import com.tangem.common.core.Config import com.tangem.sdk.extensions.initWithBiometrics +import java.lang.ref.WeakReference import javax.inject.Inject import javax.inject.Singleton @@ -23,14 +24,22 @@ internal class DefaultCardSdkProvider @Inject constructor() : CardSdkProvider, C private var _sdk: TangemSdk? = null + /** Weak reference of context that uses to create [TangemSdk] */ + private var contextRef: WeakReference = WeakReference(null) + override fun onCreate(context: Context) { - if (_sdk == null) { - _sdk = TangemSdk.initWithBiometrics(activity = context as FragmentActivity, config = config) - } + contextRef = WeakReference(context) + _sdk = TangemSdk.initWithBiometrics(activity = context as FragmentActivity, config = config) } - override fun onDestroy() { - _sdk = null + override fun onDestroy(context: Context) { + /* + + + */ + if (contextRef.get() == context) { + _sdk = null + } } private companion object {