package com.runt.open.mvi
|
|
import android.app.Activity
|
import android.app.Application
|
import android.os.Bundle
|
import android.os.Process
|
import android.util.Log
|
|
/**
|
* @author Runt(qingingrunt2010@qq.com)
|
* @purpose
|
* @date 6/2/24
|
*/
|
open class OpenApplication :Application(){
|
|
val TAG = "MyApplication"
|
var activities : MutableList<Activity> = ArrayList()
|
private var currentActivity : Activity? = null //当前activity
|
|
private var isInfront = false //是否前台运行
|
|
|
|
companion object{
|
private var application : OpenApplication? = null
|
fun getApplication() = application!!;
|
}
|
override fun onCreate() {
|
super.onCreate()
|
Log.i(TAG , "onCreate")
|
application = this //CrashReport.initCrashReport(getApplicationContext(), "8d88679ae9", false);//注册bugly
|
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
|
override fun onActivityCreated(activity : Activity , savedInstanceState : Bundle?) {
|
Log.d(TAG , "onActivityCreated " + activity.javaClass.simpleName)
|
if (! activities.contains(activity)) {
|
activities.add(activity)
|
}
|
}
|
|
override fun onActivityStarted(activity : Activity) {
|
Log.d(TAG , "onActivityStarted " + activity.javaClass.simpleName)
|
currentActivity = activity
|
}
|
|
override fun onActivityResumed(activity : Activity) {
|
Log.d(TAG , "onActivityResumed " + activity.javaClass.simpleName)
|
currentActivity = activity
|
isInfront = true
|
}
|
|
override fun onActivityPaused(activity : Activity) {
|
Log.d(TAG , "onActivityPaused " + activity.javaClass.simpleName)
|
}
|
|
override fun onActivityStopped(activity : Activity) {
|
Log.d(TAG , "onActivityStopped " + activity.javaClass.simpleName)
|
}
|
|
override fun onActivitySaveInstanceState(activity : Activity , bundle : Bundle) {
|
Log.d(TAG , "onActivitySaveInstanceState " + activity.javaClass.simpleName)
|
isInfront = false
|
}
|
|
override fun onActivityDestroyed(activity : Activity) {
|
Log.d(TAG , "onActivityDestroyed " + activity.javaClass.simpleName)
|
if (activities.contains(activity)) {
|
activities.remove(activity)
|
}
|
}
|
})
|
val crashHandler : CrashHandler = CrashHandler.getInstance()
|
crashHandler.init(applicationContext) {
|
for (activity in activities) {
|
activity.finish()
|
}
|
Process.killProcess(Process.myPid())
|
System.exit(0)
|
}
|
}
|
|
fun getCurrentActivity() : Activity? {
|
return currentActivity
|
}
|
|
/**
|
* 退出程序
|
*/
|
fun quitApp() {
|
for (activity in activities) {
|
activity.finish()
|
}
|
System.exit(0)
|
}
|
|
|
fun isInfront() : Boolean {
|
return isInfront
|
}
|
}
|