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:
Mapp/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt | 19+++----------------
Mapp/src/main/kotlin/me/rhunk/snapenhance/SharedContextHolder.kt | 13+++++--------
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