systemui各个模块之间context解耦

Signed-off-by: lijinfengde123 <lijinfeng26@huawei.com>
This commit is contained in:
lijinfengde123
2022-07-19 21:08:51 +08:00
parent 8ce71a0dea
commit 838e8da2ab
24 changed files with 77 additions and 21 deletions
+8 -4
View File
@@ -23,9 +23,15 @@ export class ResourceUtil {
/**
* Initialize ResourceManager
*/
async initResourceManager(): Promise<void> {
async initResourceManager(abilityName?: string): Promise<void> {
if (!this.resMgr) {
let context = AbilityManager.getContext();
let context;
if(abilityName === AbilityManager.ABILITY_NAME_NOTIFICATION_MANAGEMENT) {
context = AbilityManager.getAbilityContext(abilityName);
} else {
context = AbilityManager.getContext(abilityName);
}
this.resMgr = await context.resourceManager;
}
return this.resMgr;
@@ -37,7 +43,6 @@ export class ResourceUtil {
* @param resource - NormalResource instance
*/
async getString(resource): Promise<string> {
await this.initResourceManager();
return await this.resMgr.getString(resource.id);
}
@@ -47,7 +52,6 @@ export class ResourceUtil {
* @param resource - NormalResource instance
*/
async getConfiguration(): Promise<string> {
await this.initResourceManager();
return await this.resMgr.getConfiguration();
}
}
+1 -1
View File
@@ -30,7 +30,7 @@ export class SettingsUtil {
constructor() {
Log.showDebug(TAG, 'constructor');
try {
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(), Constants.URI_VAR);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(this.context), Constants.URI_VAR);
} catch (e) {
Log.showError(TAG, `constructor, acquire helper error: ${JSON.stringify(e)}`);
}
@@ -14,6 +14,7 @@
*/
import { BusinessError } from 'basic';
import AbilityContext from 'application/AbilityContext';
import ServiceExtensionContext from 'application/ServiceExtensionContext';
import Want from '@ohos.application.Want';
import Log from '../Log';
@@ -46,6 +47,19 @@ export default class AbilityManager {
return globalThis[abilityName + '_Context'];
}
static setAbilityContext(abilityName: string, context: AbilityContext): void {
Log.showDebug(TAG, `setContext, abilityName: ${abilityName}`);
globalThis[abilityName + '_Context'] = context;
}
static getAbilityContext(abilityName?: string): AbilityContext {
Log.showDebug(TAG, `getContext, abilityName: ${abilityName}`);
if (!abilityName) {
abilityName = AbilityManager.ABILITY_NAME_ENTRY;
}
return globalThis[abilityName + '_Context'];
}
static setAbilityData(abilityName: string, key: string, data: any): void {
Log.showDebug(TAG, `setAbilityData, abilityName: ${abilityName} key: ${key} data: ${JSON.stringify(data)}`);
globalThis[abilityName + '_data_' + key] = data;
@@ -56,6 +70,19 @@ export default class AbilityManager {
return globalThis[abilityName + '_data_' + key];
}
static setContextName(abilityName: string, contextName: string): void {
Log.showDebug(TAG, `setContextName, abilityName: ${abilityName}`);
globalThis[abilityName + '_ContextName'] = contextName;
}
static getContextName(abilityName?: string): string {
Log.showDebug(TAG, `setContextName, abilityName: ${abilityName}`);
if (!abilityName) {
abilityName = AbilityManager.ABILITY_NAME_ENTRY;
}
return globalThis[abilityName + '_ContextName'];
}
static startAbility(want: Want, callback?: (error?: BusinessError) => void): void {
Log.showDebug(TAG, `startAbility, want: ${JSON.stringify(want)}`);
let context: ServiceExtensionContext = AbilityManager.getContext();
@@ -1,3 +1,4 @@
// @ts-nocheck
/*
* Copyright (c) 2021-2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -36,7 +36,8 @@ export class brightnessManager {
Log.showInfo(TAG, 'init');
this.uri = settings.getUriSync(SYSTEMUI_BRIGHTNESS);
Log.showInfo(TAG, 'settings geturi of brightness is ' + this.uri);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(), CommonConstants.URI_VAR);
let contextName = AbilityManager.getContextName(AbilityManager.ABILITY_NAME_CONTROL_PANEL);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(contextName), CommonConstants.URI_VAR);
this.getValue();
}
@@ -68,6 +68,7 @@ export default class CapsuleViewModel {
this.mIsBackground = data.isBackground;
this.mWantBundleName = data.wantBundleName;
this.mWantAbilityName = data.wantAbilityName;
await ResourceUtil.initResourceManager(AbilityManager.ABILITY_NAME_STATUS_BAR);
if (data.callState == CallState.CALL_INCOMING || data.callState == CallState.CALL_WAITING) {
this.mStartTime = 0;
this.mText =await ResourceUtil.getString($r("app.string.incoming_call"));
@@ -85,8 +85,9 @@ export class ControlCenterService {
SwitchUserManager.getInstance().registerListener(this);
CONTROLCENTER_SOURCE_CONFIG.filterDatas = config.MetaToggles;
this.mAdapter = new PluginDataSourceAdapter(TAG, AbilityManager.getContext(), this, moduleName);
this.mAdapter.setWant(globalThis[Constants.PLUGIN_COMPONENT_OWNER_WANT_KEY]);//xuchanghzou
let contextName = AbilityManager.getContextName(AbilityManager.ABILITY_NAME_CONTROL_PANEL);
this.mAdapter = new PluginDataSourceAdapter(TAG, AbilityManager.getContext(contextName), this, moduleName);
this.mAdapter.setWant(globalThis[Constants.PLUGIN_COMPONENT_OWNER_WANT_KEY]);
this.mAdapter.initDataSource(CONTROLCENTER_SOURCE_CONFIG);
}
@@ -54,7 +54,7 @@ export default class BundleResourceModel {
let label = '';
let that = this;
try {
let bundleContext = await AbilityManager.getContext().createBundleContext(data[index].name);
let bundleContext = await AbilityManager.getAbilityContext(AbilityManager.ABILITY_NAME_NOTIFICATION_MANAGEMENT).createBundleContext(data[index].name);
let bundleResourceManager = await bundleContext.resourceManager;
let appInfo = data[index].appInfo;
if (parseInt(appInfo.labelId) > 0) {
@@ -13,6 +13,7 @@
* limitations under the License.
*/
import AbilityManager from '../../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import Log from '../../../../../../../../common/src/main/ets/default/Log';
import ResourceUtil from '../../../../../../../../common/src/main/ets/default/ResourceUtil';
import NoDisturbingModel from '../model/noDisturbingModel';
@@ -180,6 +181,7 @@ export default class NoDisturbComponentViewModel {
return result;
}
async getNextDayLabel(): Promise<void> {
await ResourceUtil.initResourceManager(AbilityManager.ABILITY_NAME_NOTIFICATION_MANAGEMENT);
this.nextDayLabel = await ResourceUtil.getString($r('app.string.noDisturb_nextDay'));
}
}
@@ -105,7 +105,8 @@ export default class ParseDataUtil {
let data = await BundleManager.getBundleInfo(TAG, bundleName, 0, userId);
let labelId = data?.appInfo?.labelId;
let iconId = data?.appInfo?.iconId;
let item = await BundleManager.getResourceManager(TAG, AbilityManager.getContext(), bundleName);
let contextName = AbilityManager.getContextName(AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL);
let item = await BundleManager.getResourceManager(TAG, AbilityManager.getContext(contextName), bundleName);
let appMessage = {
appName: await item.getString(parseInt(labelId)),
icon: await item.getMediaBase64(parseInt(iconId))
@@ -13,6 +13,7 @@
* limitations under the License.
*/
import AbilityManager from '../../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import display from '@ohos.display'
import Log from '../../../../../../../../common/src/main/ets/default/Log'
import ResourceUtil from '../../../../../../../../common/src/main/ets/default/ResourceUtil'
@@ -62,6 +63,7 @@ class StatusBarConfiguration {
async getDirectionAndPosition() {
Log.showInfo(TAG, 'getDirectionAndPosition');
await ResourceUtil.initResourceManager(AbilityManager.ABILITY_NAME_STATUS_BAR);
directionStatus = await ResourceUtil.getConfiguration();
let style: any = CommonStyleConfiguration.getCommonStyle()
let deviceTypeInfo = style.deviceTypeInfo
@@ -95,7 +95,7 @@ export class StatusBarService {
SwitchUserManager.getInstance().registerListener(this);
STATUSBAR_SOURCE_CONFIG.filterDatas = config.MetaSlots;
this.mAdapter = new PluginDataSourceAdapter(TAG, AbilityManager.getContext(), this, moduleName);
this.mAdapter = new PluginDataSourceAdapter(TAG, AbilityManager.getContext(AbilityManager.ABILITY_NAME_STATUS_BAR), this, moduleName);
this.mAdapter.setWant(globalThis[Constants.PLUGIN_COMPONENT_OWNER_WANT_KEY]);
this.mAdapter.initDataSource(STATUSBAR_SOURCE_CONFIG);
}
@@ -13,6 +13,7 @@
* limitations under the License.
*/
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import display from '@ohos.display';
import Log from '../../../../../../../common/src/main/ets/default/log';
import ResourceUtil from '../../../../../../../common/src/main/ets/default/resourceutil';
@@ -61,6 +62,7 @@ class NavBarConfiguration {
}
async getDirectionAndPosition() {
await ResourceUtil.initResourceManager(AbilityManager.ABILITY_NAME_NAVIGATION_BAR);
directionNav = await ResourceUtil.getConfiguration();
if (directionNav.direction == -1) {
statusbarPosition = await ResourceUtil.getString($r("app.string.status_bar_position_landscape"))
@@ -52,12 +52,12 @@ export default class NavigationBarViewModel {
this.mNavigationBarComponentData =
AppStorage.SetAndLink(NAVIGATION_BAR_COMPONENT_DATA_KEY, this.mNavigationBarComponentData).get()
this.urivar = settings.getUriSync(this.settingDataKey);
if (AbilityManager.getContext() == null) {
if (AbilityManager.getContext(AbilityManager.ABILITY_NAME_NAVIGATION_BAR) == null) {
Log.showError(TAG, 'AbilityManager.getContext() is null');
} else {
Log.showInfo(TAG, 'context: ' + AbilityManager.getContext());
Log.showInfo(TAG, 'context: ' + AbilityManager.getContext(AbilityManager.ABILITY_NAME_NAVIGATION_BAR));
}
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(), CommonConstants.URI_VAR);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(AbilityManager.ABILITY_NAME_NAVIGATION_BAR), CommonConstants.URI_VAR);
this.initNavigationBarStatus();
}
@@ -24,6 +24,7 @@ const TAG = 'NotificationManagement-MainAbility';
export default class MainAbility extends Ability {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
Log.showInfo(TAG, 'MainAbility onCreate');
AbilityManager.setAbilityContext(AbilityManager.ABILITY_NAME_NOTIFICATION_MANAGEMENT, this.context);
globalThis[AbilityManager.ABILITY_NAME_NOTIFICATION_MANAGEMENT + '_want'] = want;
}
@@ -12,6 +12,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import ControlCenterComponent from '../../../../../../../features/controlcentercomponent/src/main/ets/com/ohos/pages/ControlCenterComponent'
import Log from '../../../../../../../common/src/main/ets/default/Log'
import Constants from './common/constants'
@@ -25,6 +27,7 @@ export default struct Control {
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_CONTROL_PANEL,AbilityManager.ABILITY_NAME_CONTROL_PANEL);
}
aboutToDisappear() {
@@ -48,7 +48,6 @@ class ServiceExtAbility extends ServiceExtension {
Log.showError(TAG, `Can't create window, err:${JSON.stringify(err)}`);
});
AbilityManager.setContext(AbilityManager.ABILITY_NAME_BANNER_NOTICE, this.context);
let bannerRect = {
left: 872 * dis.width / 1280,
top: 44 * dis.width / 1280,
@@ -38,7 +38,8 @@ struct Index {
mDefaultBannerRect: any;
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
Log.showInfo(TAG, `aboutToAppear Start`);
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL,AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL);
setAppBgColor('#00000000')
this.mClearCallbacks = []
this.mClearCallbacks.push(EventManager.subscribe('onBannerNoticeShow', () => this.onBannerNoticeShow()))
@@ -13,6 +13,7 @@
* limitations under the License.
*/
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import Log from '../../../../../../../common/src/main/ets/default/Log'
import EventManager from "../../../../../../../common/src/main/ets/default/event/eventmanager"
import {obtainStartAbility} from "../../../../../../../common/src/main/ets/default/event/eventutil"
@@ -34,7 +35,8 @@ export default struct Notification {
@StorageLink('notificationList') notificationList: any[] = []
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
Log.showInfo(TAG, `aboutToAppear Start`);
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL,AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL);
}
build() {
@@ -43,7 +43,6 @@ class ServiceExtAbility extends ServiceExtension {
}).catch((err) => {
});
AbilityManager.setContext(AbilityManager.ABILITY_NAME_BANNER_NOTICE, this.context);
let bannerRect = {
left: 0,
top: dis.height / 5,
@@ -38,7 +38,8 @@ struct Index {
mDefaultBannerRect: any;
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
Log.showInfo(TAG, `aboutToAppear Start`);
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL,AbilityManager.ABILITY_NAME_DROPDOWN_PANEL);
setAppBgColor('#00000000')
this.mClearCallbacks = []
this.mClearCallbacks.push(EventManager.subscribe('onBannerNoticeShow', () => this.onBannerNoticeShow()))
@@ -12,6 +12,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import ControlCenterComponent from '../../../../../../../features/controlcentercomponent/src/main/ets/com/ohos/pages/ControlCenterComponent'
import BatteryIcon from '../../../../../../../features/batterycomponent/src/main/ets/default/pages/batteryIcon'
import ClockIcon from '../../../../../../../features/clockcomponent/src/main/ets/default/pages/clockIcon'
@@ -38,6 +40,7 @@ export default struct Control {
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_CONTROL_PANEL,AbilityManager.ABILITY_NAME_DROPDOWN_PANEL);
}
aboutToDisappear() {
@@ -22,6 +22,7 @@ import SignalIcon from '../../../../../../../features/signalcomponent/src/main/e
import LocationIcon from '../../../../../../../features/locationcomponent/src/main/ets/com/ohos/pages/StatusBarIconItemLocationComponent'
import RingModeIcon from '../../../../../../../features/ringmodecomponent/src/main/ets/com/ohos/pages/StatusBarIconItemRingModeComponent'
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import image from "@ohos.multimedia.image"
import Log from '../../../../../../../common/src/main/ets/default/Log'
import Trace from '../../../../../../../common/src/main/ets/default/Trace'
@@ -42,6 +43,7 @@ import featureAbility from '@ohos.ability.featureAbility';
import settings from '@ohos.settings';
import CommonConstants from "../../../../../../../common/src/main/ets/default/Constants";
const TAG = 'DropdownPanel-Index'
let mHeightConfigUtils
@@ -99,7 +101,7 @@ struct Index {
let dropdownRect = AbilityManager.getAbilityData(AbilityManager.ABILITY_NAME_DROPDOWN_PANEL, 'rect')
let navigationBarRect = AbilityManager.getAbilityData(AbilityManager.ABILITY_NAME_NAVIGATION_BAR, 'config')
this.urivar = settings.getUriSync(this.settingDataKey);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(), CommonConstants.URI_VAR);
this.helper = featureAbility.acquireDataAbilityHelper(AbilityManager.getContext(AbilityManager.ABILITY_NAME_DROPDOWN_PANEL), CommonConstants.URI_VAR);
this.resizeDropdownPanelAndNavigationBar(dropdownRect, navigationBarRect);
Log.showDebug(TAG, `getValueSync componentOptAreaHeightPX: ${this.componentOptAreaHeightPX}`)
this.helper.on("dataChange", this.urivar, (data) => {
@@ -13,6 +13,7 @@
* limitations under the License.
*/
import AbilityManager from '../../../../../../../common/src/main/ets/default/abilitymanager/abilityManager';
import Log from '../../../../../../../common/src/main/ets/default/Log'
import EventManager, { unsubscribe } from "../../../../../../../common/src/main/ets/default/event/eventmanager"
import { obtainStartAbility } from "../../../../../../../common/src/main/ets/default/event/eventutil"
@@ -49,7 +50,8 @@ export default struct Notification {
@StorageLink('notificationList') notificationList: any[] = []
aboutToAppear() {
Log.showInfo(TAG, `aboutToAppear Start`)
Log.showInfo(TAG, `aboutToAppear Start`);
AbilityManager.setContextName(AbilityManager.ABILITY_NAME_NOTIFICATION_PANEL,AbilityManager.ABILITY_NAME_DROPDOWN_PANEL);
}
build() {
@@ -249,6 +251,7 @@ struct CenterTitle {
async updateTimeString(date: Date) {
this.mTime = TimeManager.formatTime(date);
Log.showDebug(TAG, ` month is ${date.getMonth() + 1} , day is ${date.getDate()} , week is ${Constants.WEEKDAY_LIST[date.getDay() - 1]}`);
await ResourceUtil.initResourceManager(AbilityManager.ABILITY_NAME_DROPDOWN_PANEL);
let timeString = (date.getMonth() + 1) + (await ResourceUtil.getString($r('app.string.month')));
timeString += date.getDate() + (await ResourceUtil.getString($r('app.string.day')));
timeString += await ResourceUtil.getString(Constants.WEEKDAY_LIST[date.getDay()]);