Updated on 2026-08-14
This commit is contained in:
parent
40af5f555b
commit
8fbfee735b
5 changed files with 73 additions and 19 deletions
|
|
@ -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) }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue