Jetpack Compose OverlayService. You have to have all the correct permissions granted and in your manifest, but if you do, this this will show a green box with "Hello" in it!

January 20, 2021 ยท View on GitHub

import android.os.Bundle import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleRegistry import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner

internal class MyLifecycleOwner : SavedStateRegistryOwner { private var mLifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this) private var mSavedStateRegistryController: SavedStateRegistryController = SavedStateRegistryController.create(this)

/**
 * @return True if the Lifecycle has been initialized.
 */
val isInitialized: Boolean
    get() = true

override fun getLifecycle(): Lifecycle {
    return mLifecycleRegistry
}

fun setCurrentState(state: Lifecycle.State) {
    mLifecycleRegistry.currentState = state
}

fun handleLifecycleEvent(event: Lifecycle.Event) {
    mLifecycleRegistry.handleLifecycleEvent(event)
}

override fun getSavedStateRegistry(): SavedStateRegistry {
    return mSavedStateRegistryController.savedStateRegistry
}

fun performRestore(savedState: Bundle?) {
    mSavedStateRegistryController.performRestore(savedState)
}

fun performSave(outBundle: Bundle) {
    mSavedStateRegistryController.performSave(outBundle)
}

}