package com.runt.open.mvi import android.app.Activity import android.app.Application import android.os.Bundle import android.util.Log /** * @author Runt(qingingrunt2010@qq.com) * @purpose * @date 6/2/24 */ open class OpenApplication :Application(){ val TAG = "MyApplication" var activities = 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 + " ${activities.size}") 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 if(activities.indexOf(activity) == activities.size - 1){ isInfront = true Log.e(TAG , "onActivityResumed: 回到前台") } } 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 + " index = ${activities.indexOf(activity)} , size = ${activities.size}") if(activities.indexOf(activity) == activities.size - 1){ isInfront = false Log.e(TAG , "onActivitySaveInstanceState: 进入后台") } } 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() } System.exit(0) } } fun getCurrentActivity() : Activity? { return currentActivity } /** * 退出程序 */ fun quitApp() { for (activity in activities) { activity.finish() } System.exit(0) } fun isInfront() : Boolean { return isInfront } }