feat: ActivityProvider
This commit is contained in:
parent
3003e78912
commit
193036f37c
2 changed files with 38 additions and 0 deletions
|
|
@ -29,7 +29,11 @@ class ManagerApplication : Application() {
|
|||
super.onCreate()
|
||||
|
||||
startKoin {
|
||||
// Android activities & context
|
||||
androidContext(this@ManagerApplication)
|
||||
modules(module(createdAtStart = true) {
|
||||
singleOf(::ActivityProvider)
|
||||
})
|
||||
|
||||
// HTTP
|
||||
modules(module {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package com.aliucord.manager.di
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.Application
|
||||
import android.os.Bundle
|
||||
import java.util.Objects
|
||||
|
||||
class ActivityProvider(application: Application) {
|
||||
private var activeActivity: Activity? = null
|
||||
|
||||
/**
|
||||
* Gets the current active activity as a specific activity or errors otherwise.
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun <T : Activity> get(): T = Objects.requireNonNull(activeActivity, "No active activity cached!") as T
|
||||
|
||||
init {
|
||||
application.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
|
||||
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
|
||||
override fun onActivityPaused(activity: Activity) {}
|
||||
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
|
||||
override fun onActivityStarted(activity: Activity) {}
|
||||
override fun onActivityStopped(activity: Activity) {}
|
||||
|
||||
override fun onActivityResumed(activity: Activity) {
|
||||
activeActivity = activity
|
||||
}
|
||||
|
||||
override fun onActivityDestroyed(activity: Activity) {
|
||||
activeActivity = null
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue