Runt
2025-06-05 9580d80ae7fd2c56d5de9a04b2747b26f631954d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
    }
}