97 lines
3.3 KiB
Kotlin
97 lines
3.3 KiB
Kotlin
package com.gh.base
|
|
|
|
import android.app.Activity
|
|
import android.app.Application
|
|
import android.os.Bundle
|
|
import com.gh.common.notifier.Notifier
|
|
import com.gh.common.util.DataUtils
|
|
import com.gh.common.util.FloatingBackViewManager
|
|
import com.gh.download.DownloadManager
|
|
import com.gh.gamecenter.MainActivity
|
|
import com.gh.gamecenter.SplashScreenActivity
|
|
import com.gh.gamecenter.energy.EnergyCenterActivity
|
|
import com.gh.gamecenter.forum.detail.ForumDetailActivity
|
|
import com.gh.gamecenter.forum.list.ForumListActivity
|
|
import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity
|
|
import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity
|
|
import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity
|
|
import com.halo.assistant.HaloApp
|
|
import com.lightgame.utils.AppManager
|
|
|
|
class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks {
|
|
|
|
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
|
|
AppManager.getInstance().addActivity(activity)
|
|
}
|
|
|
|
override fun onActivityStarted(activity: Activity) {
|
|
|
|
}
|
|
|
|
override fun onActivityResumed(activity: Activity) {
|
|
CurrentActivityHolder.activitySet.add(activity)
|
|
|
|
// 判断是否需要显示或隐藏返回小浮窗
|
|
if (FloatingBackViewManager.getType().isNotEmpty()) {
|
|
if (activity is EnergyCenterActivity
|
|
&& FloatingBackViewManager.getType() == FloatingBackViewManager.TYPE_TASK
|
|
) {
|
|
FloatingBackViewManager.disableBackView()
|
|
} else if (!shouldShowActivityBackView(activity)
|
|
&& FloatingBackViewManager.getType() == FloatingBackViewManager.TYPE_ACTIVITY
|
|
) {
|
|
FloatingBackViewManager.disableBackView()
|
|
} else {
|
|
FloatingBackViewManager.showBackView(activity)
|
|
}
|
|
}
|
|
|
|
if (HaloApp.isUserAcceptPrivacyPolicy(activity)) {
|
|
DataUtils.onResume(activity)
|
|
// FIXME 这里应该只是部分Activity需要
|
|
try {
|
|
// 初始化gameMap
|
|
if (activity !is SplashScreenActivity) {
|
|
DownloadManager.getInstance().initGameMap()
|
|
}
|
|
} catch (e: Exception) {
|
|
e.printStackTrace()
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun shouldShowActivityBackView(activity: Activity): Boolean {
|
|
return (activity is MainActivity
|
|
|| activity is ArticleDetailActivity
|
|
|| activity is ForumVideoDetailActivity
|
|
|| activity is ForumDetailActivity
|
|
|| activity is ForumListActivity
|
|
|| activity is NewQuestionDetailActivity)
|
|
}
|
|
|
|
override fun onActivityPaused(activity: Activity) {
|
|
CurrentActivityHolder.activitySet.remove(activity)
|
|
FloatingBackViewManager.dismissBackView()
|
|
|
|
if (HaloApp.isUserAcceptPrivacyPolicy(activity)) {
|
|
DataUtils.onPause(activity)
|
|
}
|
|
|
|
if (activity.isFinishing) {
|
|
AppManager.getInstance().finishActivity(activity)
|
|
}
|
|
}
|
|
|
|
override fun onActivityStopped(activity: Activity) {
|
|
Notifier.hide()
|
|
}
|
|
|
|
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
|
|
|
|
}
|
|
|
|
override fun onActivityDestroyed(activity: Activity) {
|
|
// do nothing
|
|
}
|
|
|
|
} |