commit 581b2df37ee4c89ca1b89d5dc9d27ddcddf506a2
parent 2cb5872ab0875757293901f26195efbfe5c417ab
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sat, 5 Aug 2023 09:44:26 +0200
fix: shared context weak reference
Diffstat:
2 files changed, 8 insertions(+), 24 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt b/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt
@@ -18,19 +18,10 @@ import java.lang.ref.WeakReference
import kotlin.system.exitProcess
class RemoteSideContext(
- ctx: Context
+ val androidContext: Context
) {
- private var _context: WeakReference<Context> = WeakReference(ctx)
private var _activity: WeakReference<Activity>? = null
- var androidContext: Context
- get() = synchronized(this) {
- _context.get() ?: error("Context is null")
- }
- set(value) { synchronized(this) {
- _context.clear(); _context = WeakReference(value)
- } }
-
var activity: Activity?
get() = _activity?.get()
set(value) { _activity?.clear(); _activity = WeakReference(value) }
@@ -99,13 +90,9 @@ class RemoteSideContext(
if (currentContext !is Activity) {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
currentContext.startActivity(this)
- return@apply
+ exitProcess(0)
}
- currentContext.startActivityForResult(this, 22)
- }
-
- if (currentContext !is Activity) {
- exitProcess(0)
+ currentContext.startActivity(this)
}
}
}
\ No newline at end of file
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/SharedContextHolder.kt b/app/src/main/kotlin/me/rhunk/snapenhance/SharedContextHolder.kt
@@ -1,19 +1,16 @@
package me.rhunk.snapenhance
import android.content.Context
+import java.lang.ref.WeakReference
object SharedContextHolder {
- private lateinit var _remoteSideContext: RemoteSideContext
+ private lateinit var _remoteSideContext: WeakReference<RemoteSideContext>
fun remote(context: Context): RemoteSideContext {
- if (!::_remoteSideContext.isInitialized) {
- _remoteSideContext = RemoteSideContext(context)
+ if (!::_remoteSideContext.isInitialized || _remoteSideContext.get() == null) {
+ _remoteSideContext = WeakReference(RemoteSideContext(context))
}
- if (_remoteSideContext.androidContext != context) {
- _remoteSideContext.androidContext = context
- }
-
- return _remoteSideContext
+ return _remoteSideContext.get()!!
}
}
\ No newline at end of file