xugenyuan

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

Signed-off-by: xugenyuan <xugenyuan@wondertek.com.cn>
@@ -20,40 +20,15 @@ import { HostEnum, HostManager, WDHttp } from 'wdNetwork'; @@ -20,40 +20,15 @@ import { HostEnum, HostManager, WDHttp } from 'wdNetwork';
20 import { LoginModule } from 'wdLogin/src/main/ets/LoginModule'; 20 import { LoginModule } from 'wdLogin/src/main/ets/LoginModule';
21 import { ConfigurationConstant } from '@kit.AbilityKit'; 21 import { ConfigurationConstant } from '@kit.AbilityKit';
22 import { WDPushNotificationManager } from 'wdHwAbility/Index'; 22 import { WDPushNotificationManager } from 'wdHwAbility/Index';
  23 +import { StartupManager } from '../startupmanager/StartupManager';
23 24
24 export default class EntryAbility extends UIAbility { 25 export default class EntryAbility extends UIAbility {
25 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 26 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
26 - UmengStats.preInit(this.context)  
27 - SPHelper.init(this.context); 27 + StartupManager.sharedInstance().appOnCreate(want, launchParam, this.context)
28 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); 28 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
29 29
30 - // mPaaS 初始化  
31 - MpaasUtils.initApp(this.context)  
32 -  
33 - registerRouter();  
34 - LoginModule.startup()  
35 - NetworkManager.getInstance().init()  
36 - WDHttp.initHttpHeader()  
37 - const spHostUrl = SPHelper.default.getSync('hostUrl', '') as string  
38 - if (StringUtils.isNotEmpty(spHostUrl)) {  
39 - HostManager.changeHost(spHostUrl as HostEnum)  
40 - }  
41 // 还没深色模式需求,暂直接不跟随系统。 30 // 还没深色模式需求,暂直接不跟随系统。
42 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT); 31 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
43 - // 注册监听网络连接  
44 - EmitterUtils.receiveEvent(EmitterEventId.NETWORK_CONNECTED, ((str?: string) => {  
45 - let type: NetworkType | null = null  
46 - if (str) {  
47 - type = JSON.parse(str) as NetworkType  
48 - }  
49 - Logger.info('network connected: ' + type?.toString())  
50 - }))  
51 - // 注册监听网络断开  
52 - EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => {  
53 - Logger.info('network disconnected')  
54 - }))  
55 -  
56 - WDPushNotificationManager.getInstance().onWant(want)  
57 } 32 }
58 33
59 // App活着情况下,点击推送通知进入 34 // App活着情况下,点击推送通知进入
@@ -63,7 +38,7 @@ export default class EntryAbility extends UIAbility { @@ -63,7 +38,7 @@ export default class EntryAbility extends UIAbility {
63 38
64 onDestroy(): void { 39 onDestroy(): void {
65 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); 40 hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
66 - NetworkManager.getInstance().release() 41 + StartupManager.sharedInstance().appOnDestory()
67 } 42 }
68 43
69 onWindowStageCreate(windowStage: window.WindowStage): void { 44 onWindowStageCreate(windowStage: window.WindowStage): void {
@@ -14,6 +14,7 @@ import LaunchDataModel from '../viewModel/LaunchDataModel' @@ -14,6 +14,7 @@ import LaunchDataModel from '../viewModel/LaunchDataModel'
14 import { Logger, SPHelper, UmengStats } from 'wdKit/Index'; 14 import { Logger, SPHelper, UmengStats } from 'wdKit/Index';
15 import { SpConstants } from 'wdConstant/Index'; 15 import { SpConstants } from 'wdConstant/Index';
16 import { TrackingModule } from 'wdTracking/Index' 16 import { TrackingModule } from 'wdTracking/Index'
  17 +import { StartupManager } from '../../startupmanager/StartupManager'
17 18
18 @Entry 19 @Entry
19 @Component 20 @Component
@@ -45,10 +46,9 @@ struct LaunchPage { @@ -45,10 +46,9 @@ struct LaunchPage {
45 } 46 }
46 47
47 onConfirm() { 48 onConfirm() {
48 - UmengStats.initAfterAgreeProtocol()  
49 - TrackingModule.startup(getContext(this) as common.UIAbilityContext)  
50 // Save privacy agreement status. 49 // Save privacy agreement status.
51 this.saveIsPrivacy(); 50 this.saveIsPrivacy();
  51 + StartupManager.sharedInstance().appAgreedProtocol()
52 //跳转引导页 52 //跳转引导页
53 this.jumpToGuidePage(); 53 this.jumpToGuidePage();
54 //同意隐私协议后请求启动页相关数据 54 //同意隐私协议后请求启动页相关数据
@@ -98,8 +98,7 @@ struct LaunchPage { @@ -98,8 +98,7 @@ struct LaunchPage {
98 // } 98 // }
99 } else { 99 } else {
100 100
101 - UmengStats.initAfterAgreeProtocol()  
102 - TrackingModule.startup(getContext(this) as common.UIAbilityContext) 101 + StartupManager.sharedInstance().appAgreedProtocol()
103 102
104 //需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页 103 //需要根据请求数据判断是否需要进入广告页,广告数据为nil则直接跳转到首页
105 //获取本地存储的启动页数据 104 //获取本地存储的启动页数据
  1 +import { AbilityConstant, common, Want } from '@kit.AbilityKit'
  2 +import { WDPushNotificationManager } from 'wdHwAbility/Index'
  3 +import { DeviceUtil,
  4 + EmitterEventId,
  5 + EmitterUtils,
  6 + Logger,
  7 + MpaasUtils, NetworkManager,
  8 + NetworkType,
  9 + SPHelper,
  10 + StringUtils,
  11 + TingyunAPM,
  12 + UmengStats } from 'wdKit/Index'
  13 +import { LoginModule } from 'wdLogin/Index'
  14 +import { HostEnum, HostManager, WDHttp } from 'wdNetwork/Index'
  15 +import { registerRouter } from 'wdRouter/Index'
  16 +import { TrackingModule } from 'wdTracking/Index'
  17 +import { JSON } from '@kit.ArkTS'
  18 +
  19 +const TAG = "[StartupManager]"
  20 +
  21 +/// 启动任务管理类
  22 +export class StartupManager {
  23 +
  24 + private context?: common.UIAbilityContext
  25 +
  26 + private static _manger?: StartupManager
  27 + static sharedInstance(): StartupManager {
  28 + if (!StartupManager._manger) {
  29 + StartupManager._manger = new StartupManager()
  30 + }
  31 + return StartupManager._manger
  32 + }
  33 +
  34 + // App启动
  35 + appOnCreate(want: Want, launchParam: AbilityConstant.LaunchParam, context: common.UIAbilityContext) {
  36 + Logger.debug(TAG, "App onCreate: " + `\nwant: ${want}\nlaunchParam: ${launchParam}`)
  37 + this.context = context
  38 +
  39 + // KV存储
  40 + SPHelper.init(context);
  41 +
  42 + // 路由注册
  43 + registerRouter();
  44 +
  45 + // 网络模块
  46 + NetworkManager.getInstance().init()
  47 +
  48 + // App环境
  49 + const spHostUrl = SPHelper.default.getSync('hostUrl', '') as string
  50 + if (StringUtils.isNotEmpty(spHostUrl)) {
  51 + HostManager.changeHost(spHostUrl as HostEnum)
  52 + }
  53 +
  54 + // 友盟预初始化
  55 + this.preInitUmentStat()
  56 +
  57 + // 通知栏点击后启动
  58 + WDPushNotificationManager.getInstance().onWant(want)
  59 + Logger.debug(TAG, "App onCreate: finised")
  60 + }
  61 +
  62 + appOnDestory() {
  63 + Logger.debug(TAG, "App onDestory")
  64 + NetworkManager.getInstance().release()
  65 + }
  66 +
  67 + // 同意隐私协议之后,立即执行必要初始化
  68 + appAgreedProtocol() {
  69 + Logger.debug(TAG, "App 已同意隐私等协议,开始必要初始化")
  70 + this.initCheckDeviceId()
  71 +
  72 + this.initMpaas()
  73 + this.initSensorData()
  74 +
  75 + this.initTingyun()
  76 +
  77 + this.initNetwork()
  78 +
  79 + this.initGeTuiPush()
  80 +
  81 + this.initUmengStat()
  82 +
  83 + this.initLocation()
  84 +
  85 + this.initAuthLogin()
  86 + Logger.debug(TAG, "App 必要初始化完成")
  87 + }
  88 +
  89 + // 到达主页后,初始化非必须部分
  90 + appReachMainPage() : Promise<void> {
  91 + return new Promise((resolve) => {
  92 + Logger.debug(TAG, "App 进入首页,开始其他任务初始化")
  93 + //TODO:
  94 +
  95 + resolve()
  96 + })
  97 + }
  98 +
  99 + // mPaaS 初始化,检测升级用
  100 + private initMpaas() {
  101 + Logger.debug(TAG, "App mPaaS初始化")
  102 + MpaasUtils.initApp(this.context!)
  103 + }
  104 +
  105 + private initTingyun() {
  106 + // Logger.debug(TAG, "App tingyunAPM 初始化")
  107 + // TingyunAPM.initApp(this.context!, DeviceUtil.clientId())
  108 + }
  109 +
  110 + private initSensorData() {
  111 + Logger.debug(TAG, "App 神策埋点 初始化")
  112 + TrackingModule.startup(this.context!)
  113 + }
  114 +
  115 + private preInitUmentStat() {
  116 + UmengStats.preInit(this.context!)
  117 + }
  118 + private initUmengStat() {
  119 + Logger.debug(TAG, "App 友盟统计 初始化")
  120 + UmengStats.initAfterAgreeProtocol()
  121 + }
  122 +
  123 + private initGeTuiPush() {
  124 + // Logger.debug(TAG, "App 初始化")
  125 + }
  126 +
  127 + private initLocation() {
  128 + // Logger.debug(TAG, "App 初始化")
  129 + }
  130 +
  131 + private initNetwork() {
  132 + Logger.debug(TAG, "App 网络 初始化")
  133 + WDHttp.initHttpHeader()
  134 + // 注册监听网络连接
  135 + EmitterUtils.receiveEvent(EmitterEventId.NETWORK_CONNECTED, ((str?: string) => {
  136 + let type: NetworkType | null = null
  137 + if (str) {
  138 + type = JSON.parse(str) as NetworkType
  139 + }
  140 + Logger.info('network connected: ' + type?.toString())
  141 + }))
  142 + // 注册监听网络断开
  143 + EmitterUtils.receiveEvent(EmitterEventId.NETWORK_DISCONNECTED, (() => {
  144 + Logger.info('network disconnected')
  145 + }))
  146 + }
  147 +
  148 + private initCheckDeviceId() {
  149 + DeviceUtil.clientId()
  150 + }
  151 +
  152 + private initAuthLogin() {
  153 + Logger.debug(TAG, "App 登录模块 初始化")
  154 + LoginModule.startup()
  155 + }
  156 +
  157 + private initThirdPlatformSDK() {
  158 +
  159 + }
  160 +
  161 + private initOthers() {
  162 +
  163 + }
  164 +}