Updated on 2026-08-14

This commit is contained in:
Tangem 2024-07-09 22:39:27 +04:00
parent 40af5f555b
commit 8fbfee735b
5 changed files with 73 additions and 19 deletions

View file

@ -7,16 +7,16 @@ import android.os.Bundle
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import java.util.*
import java.util.WeakHashMap
import kotlin.reflect.KClass
class ForegroundActivityObserver : ActivityResultCaller {
override var activityResultLauncher: ActivityResultLauncher<Intent>? = null
private set
private val activities = WeakHashMap<KClass<out Activity>, Activity>()
private val activities = WeakHashMap<KClass<out Activity>, AppCompatActivity>()
val foregroundActivity: Activity?
val foregroundActivity: AppCompatActivity?
get() = activities.entries
.filterNot { it.value.isDestroyed }
.firstOrNull()
@ -35,7 +35,7 @@ class ForegroundActivityObserver : ActivityResultCaller {
}
override fun onActivityResumed(activity: Activity) {
activities[activity::class] = activity
activities[activity::class] = activity as? AppCompatActivity
}
override fun onActivityDestroyed(activity: Activity) {
@ -59,6 +59,6 @@ class ForegroundActivityObserver : ActivityResultCaller {
}
}
fun ForegroundActivityObserver.withForegroundActivity(block: (Activity) -> Unit) {
fun ForegroundActivityObserver.withForegroundActivity(block: (AppCompatActivity) -> Unit) {
foregroundActivity?.let { block(it) }
}