Commit bbe11103 authored by wanglei's avatar wanglei

[AI重构]AI重构MyApplication

parent 70df2429
......@@ -42,80 +42,41 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
class MyApplication : Application() {
private val TAG = "MyApplication"
var uuid = ""
companion object {
lateinit var appContext: MyApplication
@JvmField
var PAUSED_VALUE = 0
@JvmField var PAUSED_VALUE = 0
val noLoadingActivities = listOf(
"full", // 过滤全屏广告
"adActivity",
"AdActivity",
"AppLovinFullscreenActivity",
SplashActivity::class.java.simpleName,
// 返回前台时不跳转启动页的 activity
"full", "adActivity", "AdActivity", "AppLovinFullscreenActivity", SplashActivity::class.java.simpleName
)
}
private var lastTimePause = 0L
private var lastTimeResume = 0L
override fun onCreate() {
super.onCreate()
appContext = this
initUUid()
initGid()
initApp()
initLifeListener()
initUuidIfNeeded()
initGidAsync()
initAll()
registerLifecycle()
initLanguage()
}
private fun initLanguage() {
// 初始化语种切换框架
MultiLanguages.init(this)
// 设置语种变化监听器
MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
appLanguageSp = newLocale.language
appLanguageCountrySp = newLocale.country
Log.i("MultiLanguages", "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
}
override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
Log.i(
"MultiLanguages", "监听到系统切换了语种,旧语种:" + oldLocale + ",新语种:" + newLocale +
",是否跟随系统:" + MultiLanguages.isSystemLanguage(this@MyApplication)
)
}
})
}
private fun initGid() = MainScope().launch(Dispatchers.IO) {
try {
val info: AdvertisingIdClient.Info = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)
val advertisingId = info.id ?: "null"
SpConstObject.gid = advertisingId
} catch (e: Exception) {
EventUtils.event("gid_exception")
}
}
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(MultiLanguages.attach(base))
// 统一初始化入口
private fun initAll() {
AdsMgr.init(appContext)
initPushAndAlarm()
initAppConfigAndInstall()
initFacebookAndSolar()
}
private fun initUUid() {
// UUID初始化
private fun initUuidIfNeeded() {
uuid = appUuid
if (TextUtils.isEmpty(uuid)) {
uuid = UUID.randomUUID().toString() + System.currentTimeMillis()
......@@ -125,140 +86,107 @@ class MyApplication : Application() {
LogEx.logDebug(TAG, "uuid=${AppPreferences.getInstance().getString("uuid", "")}")
}
fun initApp() {
//初始化广告相关业务
AdsMgr.init(appContext)
initPush()
initAppConfig()
initFacebook()
initSolar()
}
private fun initSolar() {
SolarEngineManager.getInstance().preInit(this, solarkey)
appContext.initSolarEngine(true)
}
private fun initFacebook() {
//初始化facebook sdk
FacebookSdk.sdkInitialize(applicationContext)
AppEventsLogger.activateApp(this)
}
private fun initPush() {
kotlin.runCatching {
startStayJobService()
// GID异步初始化
private fun initGidAsync() = MainScope().launch(Dispatchers.IO) {
try {
val info = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)
SpConstObject.gid = info.id ?: "null"
} catch (e: Exception) {
EventUtils.event("gid_exception")
}
}
// 推送、定时、闹钟等初始化
private fun initPushAndAlarm() {
kotlin.runCatching { startStayJobService() }
val topic = GlobalConfig.PACKAGE_NAME + "_push"
FCMManager.initFirebase(this)
FCMManager.subscribeToTopic(topic)
changeTimer()
ScreenStatusReceiver.registerScreenStatusReceiver(this)
PackageReceiver.register(this)
registerBatteryReceiver(this)
//workManager
schedulePeriodicWork(appContext)
startAlarm(appContext, 24)
startAlarm(appContext, 48)
startAlarm(appContext, 72)
//开启通知队列
listOf(24, 48, 72).forEach { startAlarm(appContext, it) }
MyNotificationManager.startNotificationQueue()
}
private fun initAppConfig() {
//初始化sp的配置
// 配置和安装来源初始化
private fun initAppConfigAndInstall() {
NewComUtils.parseConfigBean(spConfig)
NewComUtils.requestCfgCallBackMap.put("changeTimer") {
NewComUtils.requestCfgCallBackMap["changeTimer"] = {
LogEx.logDebug(TAG, "requestCfgCallBackMap changeTimer")
changeTimer()
}
InstallHelps.init { NewComUtils.requestCfg() }
}
InstallHelps.init {
NewComUtils.requestCfg()
}
// Facebook和Solar初始化
private fun initFacebookAndSolar() {
FacebookSdk.sdkInitialize(applicationContext)
AppEventsLogger.activateApp(this)
SolarEngineManager.getInstance().preInit(this, solarkey)
appContext.initSolarEngine(true)
}
private var lastTimePause = 0L
private var lastTimeResume = 0L
private fun isHotLaunch(): Boolean {
if ((lastTimeResume - lastTimePause) > 3500) {
return true
}
return false
// 多语言初始化
private fun initLanguage() {
MultiLanguages.init(this)
MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
appLanguageSp = newLocale.language
appLanguageCountrySp = newLocale.country
Log.i("MultiLanguages", "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
}
override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
Log.i(
"MultiLanguages", "监听到系统切换了语种,旧语种:" + oldLocale + ",新语种:" + newLocale +
",是否跟随系统:" + MultiLanguages.isSystemLanguage(this@MyApplication)
)
}
})
}
private fun initLifeListener() {
// 生命周期监听注册
private fun registerLifecycle() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
private var count = 0
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
ActivityManagerUtils.getInstance().addActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
count++
lastTimeResume = System.currentTimeMillis()
if (count == 1 && isHotLaunch()) {
val topActivity: Activity? = ActivityManagerUtils.getInstance().topActivity
val flag = if (topActivity == null) {
true
} else {
noLoadingActivities.all { !topActivity.localClassName.contains(it, true) }
}
LogEx.logDebug(
TAG,
"flag=$flag" + " activity:" + activity.localClassName + " topActivity=${topActivity?.localClassName}"
)
val topActivity = ActivityManagerUtils.getInstance().topActivity
val flag = topActivity == null || noLoadingActivities.all { !topActivity.localClassName.contains(it, true) }
LogEx.logDebug(TAG, "flag=$flag activity:" + activity.localClassName + " topActivity=${topActivity?.localClassName}")
if (flag) {
topActivity?.startActivity(
Intent(
topActivity, SplashActivity::class.java
).apply {
putExtra("isHotLaunch", true)
putExtra("type", -1)
})
topActivity?.startActivity(Intent(topActivity, SplashActivity::class.java).apply {
putExtra("isHotLaunch", true)
putExtra("type", -1)
})
}
}
lastTimeResume = 0
}
override fun onActivityResumed(activity: Activity) {
PAUSED_VALUE = 1
}
override fun onActivityResumed(activity: Activity) { PAUSED_VALUE = 1 }
override fun onActivityPaused(activity: Activity) {
PAUSED_VALUE = 2
lastTimePause = System.currentTimeMillis()
}
override fun onActivityStopped(activity: Activity) {
count--
}
override fun onActivityStopped(activity: Activity) { count-- }
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {
ActivityManagerUtils.getInstance().removeActivity(activity)
}
})
}
// 热启动判断
private fun isHotLaunch(): Boolean = (lastTimeResume - lastTimePause) > 3500
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(MultiLanguages.attach(base))
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment