未验证 提交 d38e32f5 编写于 作者: O openharmony_ci 提交者: Gitee

!24128 元能力arkts整改补充

Merge pull request !24128 from liuliu/amsfix
...@@ -30,7 +30,7 @@ async function restartAbility() { ...@@ -30,7 +30,7 @@ async function restartAbility() {
在目标端PageAbility的onNewWant回调中获取包含页面信息的want参数: 在目标端PageAbility的onNewWant回调中获取包含页面信息的want参数:
```ts ```ts
import Want from '@ohos.app.ability.Want'; // GlobalContext.ts 构造单例对象
export class GlobalContext { export class GlobalContext {
private constructor() {} private constructor() {}
private static instance: GlobalContext; private static instance: GlobalContext;
...@@ -51,6 +51,11 @@ export class GlobalContext { ...@@ -51,6 +51,11 @@ export class GlobalContext {
this._objects.set(key, objectClass); this._objects.set(key, objectClass);
} }
} }
```
```ts
import Want from '@ohos.application.Want';
import { GlobalContext } from './GlobalContext';
export default class EntryAbility{ export default class EntryAbility{
onNewWant(want: Want) { onNewWant(want: Want) {
...@@ -63,8 +68,9 @@ export default class EntryAbility{ ...@@ -63,8 +68,9 @@ export default class EntryAbility{
在目标端页面的自定义组件中获取包含页面信息的want参数并根据uri做路由处理: 在目标端页面的自定义组件中获取包含页面信息的want参数并根据uri做路由处理:
```ts ```ts
import Want from '@ohos.application.Want';
import router from '@ohos.router'; import router from '@ohos.router';
import { GlobalContext } from '../GlobalContext' import { GlobalContext } from '../GlobalContext';
@Entry @Entry
@Component @Component
...@@ -73,10 +79,12 @@ struct Index { ...@@ -73,10 +79,12 @@ struct Index {
onPageShow() { onPageShow() {
console.info('Index onPageShow') console.info('Index onPageShow')
let newWant: Want = GlobalContext.getContext().getObject("newWant") let newWant = GlobalContext.getContext().getObject("newWant") as Want
if (newWant.hasOwnProperty("page")) { if (newWant.parameters) {
router.push({ url: newWant.page }); if (newWant.parameters.page) {
GlobalContext.getContext().setObject("newWant", undefined) router.push({ url: newWant.parameters.page });
GlobalContext.getContext().setObject("newWant", undefined)
}
} }
} }
...@@ -160,7 +168,7 @@ export default class EntryAbility { ...@@ -160,7 +168,7 @@ export default class EntryAbility {
if (want.parameters) { if (want.parameters) {
if (want.parameters.page) { if (want.parameters.page) {
router.push({ router.push({
url: want.parameters.page url: want.parameters.page as string
}) })
} }
} }
......
...@@ -333,7 +333,7 @@ import { GlobalContext } from '../GlobalContext' ...@@ -333,7 +333,7 @@ import { GlobalContext } from '../GlobalContext'
export default class MySecondAbility extends UIAbility { export default class MySecondAbility extends UIAbility {
onDestroy() { onDestroy() {
let applicationContext = this.context.getApplicationContext(); let applicationContext = this.context.getApplicationContext();
let lifecycleId: number = GlobalContext.getContext().getObject("lifecycleId"); let lifecycleId = GlobalContext.getContext().getObject("lifecycleId") as number;
// 3.通过applicationContext注销监听应用内生命周期 // 3.通过applicationContext注销监听应用内生命周期
applicationContext.off('abilityLifecycle', lifecycleId, (error) => { applicationContext.off('abilityLifecycle', lifecycleId, (error) => {
if (error && error.code !== 0) { if (error && error.code !== 0) {
......
...@@ -27,53 +27,30 @@ onApplicationForeground(): void; ...@@ -27,53 +27,30 @@ onApplicationForeground(): void;
import UIAbility from '@ohos.app.ability.UIAbility'; import UIAbility from '@ohos.app.ability.UIAbility';
import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback'; import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback';
// 构造单例对象
export class GlobalContext {
private constructor() {}
private static instance: GlobalContext;
private _objects = new Map<string, Object>();
public static getContext(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
getObject(value: string): Object | undefined {
return this._objects.get(value);
}
setObject(key: string, objectClass: Object): void {
this._objects.set(key, objectClass);
}
}
let applicationStateChangeCallback: ApplicationStateChangeCallback = { let applicationStateChangeCallback: ApplicationStateChangeCallback = {
onApplicationForeground() { onApplicationForeground() {
console.info('applicationStateChangeCallback onApplicationForeground'); console.info('applicationStateChangeCallback onApplicationForeground');
},
onApplicationBackground() {
console.info('applicationStateChangeCallback onApplicationBackground');
} }
} }
GlobalContext.getContext().setObject("applicationStateChangeCallback", applicationStateChangeCallback);
export default class MyAbility extends UIAbility { export default class MyAbility extends UIAbility {
onCreate() { onCreate() {
console.log('MyAbility onCreate'); console.log('MyAbility onCreate');
GlobalContext.getContext().setObject("applicationContext", this.context.getApplicationContext());
// 1.获取applicationContext // 1.获取applicationContext
let applicationContext = GlobalContext.getContext().getObject("applicationContext"); let applicationContext = this.context.getApplicationContext();
// 2.通过applicationContext注册应用前后台状态监听 // 2.通过applicationContext注册应用前后台状态监听
if (applicationContext != undefined) { if (applicationContext != undefined) {
applicationContext.on('applicationStateChange', applicationContext.on('applicationStateChange', applicationStateChangeCallback);
GlobalContext.getContext().getObject("applicationStateChangeCallback"));
} }
} }
onDestroy() { onDestroy() {
let applicationContext = GlobalContext.getContext().getObject("applicationContext"); let applicationContext = this.context.getApplicationContext();
// 1.通过applicationContext解除注册应用前后台状态监听 // 1.通过applicationContext解除注册应用前后台状态监听
if (applicationContext != undefined) { if (applicationContext != undefined) {
applicationContext.off('applicationStateChange', applicationContext.off('applicationStateChange', applicationStateChangeCallback);
GlobalContext.getContext().getObject("applicationStateChangeCallback"));
} }
} }
} }
...@@ -93,53 +70,31 @@ onApplicationBackground(): void; ...@@ -93,53 +70,31 @@ onApplicationBackground(): void;
import UIAbility from '@ohos.app.ability.UIAbility'; import UIAbility from '@ohos.app.ability.UIAbility';
import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback'; import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback';
export class GlobalContext {
private constructor() {}
private static instance: GlobalContext;
private _objects = new Map<string, Object>();
public static getContext(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
getObject(value: string): Object | undefined {
return this._objects.get(value);
}
setObject(key: string, objectClass: Object): void {
this._objects.set(key, objectClass);
}
}
let applicationStateChangeCallback: ApplicationStateChangeCallback = { let applicationStateChangeCallback: ApplicationStateChangeCallback = {
onApplicationForeground() {
console.info('applicationStateChangeCallback onApplicationForeground');
},
onApplicationBackground() { onApplicationBackground() {
console.info('applicationStateChangeCallback onApplicationBackground'); console.info('applicationStateChangeCallback onApplicationBackground');
} }
} }
GlobalContext.getContext().setObject("applicationStateChangeCallback", applicationStateChangeCallback);
export default class MyAbility extends UIAbility { export default class MyAbility extends UIAbility {
onCreate() { onCreate() {
console.log('MyAbility onCreate'); console.log('MyAbility onCreate');
GlobalContext.getContext().setObject("applicationContext", this.context.getApplicationContext());
// 1.获取applicationContext // 1.获取applicationContext
let applicationContext = GlobalContext.getContext().getObject("applicationContext"); let applicationContext = this.context.getApplicationContext();
// 2.通过applicationContext注册应用前后台状态监听 // 2.通过applicationContext注册应用前后台状态监听
if (applicationContext != undefined) { if (applicationContext != undefined) {
applicationContext.on('applicationStateChange', applicationContext.on('applicationStateChange', applicationStateChangeCallback);
GlobalContext.getContext().getObject("applicationStateChangeCallback"));
} }
console.log('Resgiter applicationStateChangeCallback'); console.log('Resgiter applicationStateChangeCallback');
} }
onDestroy() { onDestroy() {
let applicationContext = GlobalContext.getContext().getObject("applicationContext"); let applicationContext = this.context.getApplicationContext();
// 1.通过applicationContext解除注册应用前后台状态监听 // 1.通过applicationContext解除注册应用前后台状态监听
if (applicationContext != undefined) { if (applicationContext != undefined) {
applicationContext.off('applicationStateChange', applicationContext.off('applicationStateChange', applicationStateChangeCallback);
GlobalContext.getContext().getObject("applicationStateChangeCallback"));
} }
} }
} }
......
...@@ -37,10 +37,7 @@ ExtensionContext主要用于查询所属Extension的信息、Module的配置信 ...@@ -37,10 +37,7 @@ ExtensionContext主要用于查询所属Extension的信息、Module的配置信
三个Module内都定义一个相同名称的ServiceExtension: 三个Module内都定义一个相同名称的ServiceExtension:
```ts ```ts
import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility'; // 单例对象 GlobalContext.ts
import Want from '@ohos.app.ability.Want';
import rpc from '@ohos.rpc';
export class GlobalContext { export class GlobalContext {
private constructor() {} private constructor() {}
private static instance: GlobalContext; private static instance: GlobalContext;
...@@ -61,6 +58,13 @@ export class GlobalContext { ...@@ -61,6 +58,13 @@ export class GlobalContext {
this._objects.set(key, objectClass); this._objects.set(key, objectClass);
} }
} }
```
```ts
import ServiceExtension from '@ohos.app.ability.ServiceExtensionAbility';
import Want from '@ohos.app.ability.Want';
import rpc from '@ohos.rpc';
import { GlobalContext } from '../GlobalContext'
export default class TheServiceExtension extends ServiceExtension { export default class TheServiceExtension extends ServiceExtension {
onCreate(want: Want) { onCreate(want: Want) {
...@@ -109,7 +113,8 @@ export default class EntryAbility extends UIAbility { ...@@ -109,7 +113,8 @@ export default class EntryAbility extends UIAbility {
在entry内新建一个ServiceModule.ts,专用于执行业务逻辑 在entry内新建一个ServiceModule.ts,专用于执行业务逻辑
```ts ```ts
import { GlobalContext } from '../TheServiceExtension' import common from '@ohos.app.ability.common';
import { GlobalContext } from '../GlobalContext';
export default class ServiceModel { export default class ServiceModel {
moduleName: string = ''; moduleName: string = '';
...@@ -122,7 +127,8 @@ export default class ServiceModel { ...@@ -122,7 +127,8 @@ export default class ServiceModel {
return; return;
} }
this.moduleName = GlobalContext.getContext().getObject('ExtensionContext').currentHapModuleInfo.name; let extensionContext = GlobalContext.getContext().getObject('ExtensionContext') as common.ServiceExtensionContext;
this.moduleName = extensionContext.currentHapModuleInfo.name;
// 根据moduleName执行不同的业务逻辑,实现对不同性能设备的区分 // 根据moduleName执行不同的业务逻辑,实现对不同性能设备的区分
switch (this.moduleName) { switch (this.moduleName) {
case 'highPerformance': case 'highPerformance':
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册