123 lines
4.6 KiB
Kotlin
123 lines
4.6 KiB
Kotlin
package com.gh.base
|
||
|
||
import android.app.Activity
|
||
import android.app.Application
|
||
import android.os.Bundle
|
||
import androidx.appcompat.app.AppCompatActivity
|
||
import com.alibaba.android.arouter.launcher.ARouter
|
||
import com.gh.ad.AdDelegateHelper
|
||
import com.gh.common.util.FloatingBackViewManager
|
||
import com.gh.common.xapk.XapkInstaller
|
||
import com.gh.download.DownloadManager
|
||
import com.gh.gamecenter.SingletonWebActivity
|
||
import com.gh.gamecenter.SkipActivity
|
||
import com.gh.gamecenter.SplashAdActivity
|
||
import com.gh.gamecenter.SplashScreenActivity
|
||
import com.gh.gamecenter.authorization.AuthorizationActivity
|
||
import com.gh.gamecenter.common.base.GlobalActivityManager
|
||
import com.gh.gamecenter.common.constant.RouteConsts
|
||
import com.gh.gamecenter.common.utils.PackageFlavorHelper
|
||
import com.gh.gamecenter.core.provider.IPushProvider
|
||
import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity
|
||
import com.gh.gamecenter.login.view.LoginActivity
|
||
import com.gh.vspace.VHelper
|
||
import com.halo.assistant.HaloApp
|
||
import com.lg.vspace.ui.launcher.LaunchActivity
|
||
|
||
// TODO:移动到对应的模块
|
||
class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks {
|
||
private var isFromBackgroundToForeground = false // 是否后台回到前台
|
||
private var activityCount = 0
|
||
|
||
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
|
||
// do nothing
|
||
}
|
||
|
||
override fun onActivityStarted(activity: Activity) {
|
||
GlobalActivityManager.currentActivity = activity
|
||
activityCount ++
|
||
if (activityCount == 1 && isFromBackgroundToForeground) {
|
||
if (AdDelegateHelper.shouldShowStartUpAd(true)
|
||
&& !HaloApp.getInstance().isSkippingThirdParty
|
||
&& activity !is SplashScreenActivity
|
||
&& activity !is SkipActivity
|
||
&& activity !is AuthorizationActivity
|
||
&& activity !is SplashAdActivity
|
||
&& activity !is SuggestionActivity
|
||
) {
|
||
activity.startActivity(SplashAdActivity.getIntent(activity))
|
||
}
|
||
isFromBackgroundToForeground = false
|
||
}
|
||
|
||
if (activityCount == 1) {
|
||
// 清除桌面角标
|
||
if (activity !is SplashScreenActivity && activity !is AuthorizationActivity) {
|
||
val pushProvider = ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider
|
||
pushProvider?.cleanBadgeNumber(activity.applicationContext)
|
||
}
|
||
}
|
||
}
|
||
|
||
override fun onActivityResumed(activity: Activity) {
|
||
// 判断是否需要显示或隐藏返回小浮窗
|
||
if (FloatingBackViewManager.getType().isNotEmpty()) {
|
||
if (activity is SingletonWebActivity
|
||
&& FloatingBackViewManager.getType() == FloatingBackViewManager.TYPE_ACTIVITY
|
||
) {
|
||
FloatingBackViewManager.disableBackView()
|
||
} else {
|
||
FloatingBackViewManager.showBackView(activity)
|
||
}
|
||
}
|
||
|
||
if (HaloApp.isUserAcceptPrivacyPolicy(activity)) {
|
||
// FIXME 这里应该只是部分Activity需要
|
||
try {
|
||
// 初始化gameMap
|
||
if (activity !is SplashScreenActivity) {
|
||
DownloadManager.getInstance().initGameMap()
|
||
}
|
||
} catch (e: Exception) {
|
||
e.printStackTrace()
|
||
}
|
||
}
|
||
|
||
if (PackageFlavorHelper.IS_TEST_FLAVOR && activity is AppCompatActivity) {
|
||
DarkModeSwitchHelper.showDarkModeSwitchFloatingView(activity)
|
||
}
|
||
|
||
if (activity is AppCompatActivity
|
||
&& activity !is LaunchActivity
|
||
&& activity !is LoginActivity
|
||
&& activity !is SplashScreenActivity
|
||
&& activity !is SkipActivity
|
||
&& activity !is AuthorizationActivity
|
||
) {
|
||
VHelper.showFeedbackDialogIfLastSuccessfulLaunchedGameExitUnexpectedly(activity)
|
||
}
|
||
|
||
XapkInstaller.updateCurrentInstallStatus()
|
||
}
|
||
|
||
override fun onActivityPaused(activity: Activity) {
|
||
FloatingBackViewManager.dismissBackView()
|
||
if (PackageFlavorHelper.IS_TEST_FLAVOR && activity is AppCompatActivity) {
|
||
DarkModeSwitchHelper.dismissDarkModeSwitchFloatingView()
|
||
}
|
||
}
|
||
|
||
override fun onActivityStopped(activity: Activity) {
|
||
activityCount --
|
||
isFromBackgroundToForeground = activityCount <= 0
|
||
}
|
||
|
||
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
|
||
// do nothing
|
||
}
|
||
|
||
override fun onActivityDestroyed(activity: Activity) {
|
||
// do nothing
|
||
}
|
||
|
||
} |