xugenyuan

ref |> 新增启动任务管理类

Signed-off-by: xugenyuan <xugenyuan@wondertek.com.cn>
... ... @@ -20,40 +20,15 @@ import { HostEnum, HostManager, WDHttp } from 'wdNetwork';
import { LoginModule } from 'wdLogin/src/main/ets/LoginModule';
import { ConfigurationConstant } from '@kit.AbilityKit';
import { WDPushNotificationManager } from 'wdHwAbility/Index';
import { StartupManager } from '../startupmanager/StartupManager';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
UmengStats.preInit(this.context)
SPHelper.init(this.context);
StartupManager.sharedInstance().appOnCreate(want, launchParam, this.context)
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
// mPaaS 初始化
MpaasUtils.initApp(this.context)
registerRouter();
LoginModule.startup()
NetworkManager.getInstance().init()
WDHttp.initHttpHeader()
const spHostUrl = SPHelper.default.getSync('hostUrl', '') as string
if (StringUtils.isNotEmpty(spHostUrl)) {
HostManager.changeHost(spHostUrl as HostEnum)
}
// 还没深色模式需求,暂直接不跟随系统。
this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
// 注册监听网络连接
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_CONNECTED, ((str?: string) => {
let type: NetworkType | null = null
if (str) {
type = JSON.parse(str) as NetworkType
}
Logger.info('network connected: ' + type?.toString())
}))
// 注册监听网络断开
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => {
Logger.info('network disconnected')
}))
WDPushNotificationManager.getInstance().onWant(want)
}
// App活着情况下,点击推送通知进入
... ... @@ -63,7 +38,7 @@ export default class EntryAbility extends UIAbility {
onDestroy(): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
NetworkManager.getInstance().release()
StartupManager.sharedInstance().appOnDestory()
}
onWindowStageCreate(windowStage: window.WindowStage): void {
... ...
... ... @@ -14,6 +14,7 @@ import LaunchDataModel from '../viewModel/LaunchDataModel'
import { Logger, SPHelper, UmengStats } from 'wdKit/Index';
import { SpConstants } from 'wdConstant/Index';
import { TrackingModule } from 'wdTracking/Index'
import { StartupManager } from '../../startupmanager/StartupManager'
@Entry
@Component
... ... @@ -45,10 +46,9 @@ struct LaunchPage {
}
onConfirm() {
UmengStats.initAfterAgreeProtocol()
TrackingModule.startup(getContext(this) as common.UIAbilityContext)
// Save privacy agreement status.
this.saveIsPrivacy();
StartupManager.sharedInstance().appAgreedProtocol()
//跳转引导页
this.jumpToGuidePage();
//同意隐私协议后请求启动页相关数据
... ... @@ -98,8 +98,7 @@ struct LaunchPage {
// }
} else {
UmengStats.initAfterAgreeProtocol()
TrackingModule.startup(getContext(this) as common.UIAbilityContext)
StartupManager.sharedInstance().appAgreedProtocol()
//需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页
//获取本地存储的启动页数据
... ...
import { AbilityConstant, common, Want } from '@kit.AbilityKit'
import { WDPushNotificationManager } from 'wdHwAbility/Index'
import { DeviceUtil,
EmitterEventId,
EmitterUtils,
Logger,
MpaasUtils, NetworkManager,
NetworkType,
SPHelper,
StringUtils,
TingyunAPM,
UmengStats } from 'wdKit/Index'
import { LoginModule } from 'wdLogin/Index'
import { HostEnum, HostManager, WDHttp } from 'wdNetwork/Index'
import { registerRouter } from 'wdRouter/Index'
import { TrackingModule } from 'wdTracking/Index'
import { JSON } from '@kit.ArkTS'
const TAG = "[StartupManager]"
/// 启动任务管理类
export class StartupManager {
private context?: common.UIAbilityContext
private static _manger?: StartupManager
static sharedInstance(): StartupManager {
if (!StartupManager._manger) {
StartupManager._manger = new StartupManager()
}
return StartupManager._manger
}
// App启动
appOnCreate(want: Want, launchParam: AbilityConstant.LaunchParam, context: common.UIAbilityContext) {
Logger.debug(TAG, "App onCreate: " + `\nwant: ${want}\nlaunchParam: ${launchParam}`)
this.context = context
// KV存储
SPHelper.init(context);
// 路由注册
registerRouter();
// 网络模块
NetworkManager.getInstance().init()
// App环境
const spHostUrl = SPHelper.default.getSync('hostUrl', '') as string
if (StringUtils.isNotEmpty(spHostUrl)) {
HostManager.changeHost(spHostUrl as HostEnum)
}
// 友盟预初始化
this.preInitUmentStat()
// 通知栏点击后启动
WDPushNotificationManager.getInstance().onWant(want)
Logger.debug(TAG, "App onCreate: finised")
}
appOnDestory() {
Logger.debug(TAG, "App onDestory")
NetworkManager.getInstance().release()
}
// 同意隐私协议之后,立即执行必要初始化
appAgreedProtocol() {
Logger.debug(TAG, "App 已同意隐私等协议,开始必要初始化")
this.initCheckDeviceId()
this.initMpaas()
this.initSensorData()
this.initTingyun()
this.initNetwork()
this.initGeTuiPush()
this.initUmengStat()
this.initLocation()
this.initAuthLogin()
Logger.debug(TAG, "App 必要初始化完成")
}
// 到达主页后,初始化非必须部分
appReachMainPage() : Promise<void> {
return new Promise((resolve) => {
Logger.debug(TAG, "App 进入首页,开始其他任务初始化")
//TODO:
resolve()
})
}
// mPaaS 初始化,检测升级用
private initMpaas() {
Logger.debug(TAG, "App mPaaS初始化")
MpaasUtils.initApp(this.context!)
}
private initTingyun() {
// Logger.debug(TAG, "App tingyunAPM 初始化")
// TingyunAPM.initApp(this.context!, DeviceUtil.clientId())
}
private initSensorData() {
Logger.debug(TAG, "App 神策埋点 初始化")
TrackingModule.startup(this.context!)
}
private preInitUmentStat() {
UmengStats.preInit(this.context!)
}
private initUmengStat() {
Logger.debug(TAG, "App 友盟统计 初始化")
UmengStats.initAfterAgreeProtocol()
}
private initGeTuiPush() {
// Logger.debug(TAG, "App 初始化")
}
private initLocation() {
// Logger.debug(TAG, "App 初始化")
}
private initNetwork() {
Logger.debug(TAG, "App 网络 初始化")
WDHttp.initHttpHeader()
// 注册监听网络连接
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_CONNECTED, ((str?: string) => {
let type: NetworkType | null = null
if (str) {
type = JSON.parse(str) as NetworkType
}
Logger.info('network connected: ' + type?.toString())
}))
// 注册监听网络断开
EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => {
Logger.info('network disconnected')
}))
}
private initCheckDeviceId() {
DeviceUtil.clientId()
}
private initAuthLogin() {
Logger.debug(TAG, "App 登录模块 初始化")
LoginModule.startup()
}
private initThirdPlatformSDK() {
}
private initOthers() {
}
}
\ No newline at end of file
... ...