SEO基础

SEO基础

Products

当前位置:首页 > SEO基础 >

创建全国临期进口食品网站需要哪些条件?

96SEO 2026-02-19 16:42 9


公共事件分类

公共事件从系统角度可分为#xff1a;系统公共事件和自定义公共事件。

创建全国临期进口食品网站需要哪些条件?

公共事件简介

Service公共事件服务为应用程序提供订阅、发布、退订公共事件的能力。

公共事件分类

系统公共事件CES内部定义的公共事件当前仅支持系统应用和系统服务发布例如HAP安装、更新、卸载等公共事件。

目前支持的系统公共事件请参见系统公共事件列表。

自定义公共事件应用定义的公共事件可用于实现跨进程的事件通信能力。

公共事件按发送方式可分为无序公共事件、有序公共事件和粘性公共事件。

无序公共事件CES在转发公共事件时不考虑订阅者是否接收到该事件也不保证订阅者接收到该事件的顺序与其订阅顺序一致。

有序公共事件CES在转发公共事件时根据订阅者设置的优先级等级优先将公共事件发送给优先级较高的订阅者等待其成功接收该公共事件之后再将事件发送给优先级较低的订阅者。

如果有多个订阅者具有相同的优先级则他们将随机接收到公共事件。

粘性公共事件能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。

普通的公共事件只能在订阅后发送才能收到而粘性公共事件的特殊性就是可以先发送后订阅同时也支持先订阅后发送。

发送粘性事件必须是系统应用或系统服务粘性事件发送后会一直存在系统中且发送者需要申请ohos.permission.COMMONEVENT_STICKY权限配置方式请参见声明权限。

运作机制

每个应用都可以按需订阅公共事件订阅成功当公共事件发布时系统会将其发送给对应的应用。

这些公共事件可能来自系统、其他应用和应用自身。

公共事件示意图

公共事件发布方如果不加限制任何应用都可以订阅公共事件并读取相关信息应避免在公共事件中携带敏感信息。

采用以下方式可以限制公共事件接收方的范围。

通过CommonEventPublishData中的subscriberPermissions参数指定订阅者所需权限。

通过CommonEventPublishData中的bundleName参数指定订阅者的包名。

公共事件订阅方订阅自定义公共事件后任意应用都可以向订阅者发送潜在的恶意公共事件。

采用以下方式可以限制公共事件发布方的范围。

通过CommonEventSubscribeInfo中的publisherPermission参数指定发布者所需权限。

通过CommonEventSubscribeInfo中的publisherBundleName参数参数指定发布者的包名。

公共事件类型定义在ohos.commonEventManager模块的Support枚举中。

事件名称功能描述COMMON_EVENT_POWER_CONNECTED设备连接到外部电源的公共事件的动作COMMON_EVENT_POWER_DISCONNECTED设备与外部电源断开的公共事件的动作COMMON_EVENT_CHARGING表示系统开始为电池充电的公共事件的动作COMMON_EVENT_DISCHARGING表示系统停止为电池充电的公共事件的动作COMMON_EVENT_SHUTDOWN表示设备正在关闭并将继续最终关闭的公共事件的操作COMMON_EVENT_SCREEN_ON表示由电源服务发起的设备亮屏完成的普通事件的动作COMMON_EVENT_SCREEN_OFF表示由电源服务发起的设备灭屏完成的普通事件的动作COMMON_EVENT_WIFI_POWER_STATEWi-Fi开关状态变化COMMON_EVENT_SCREEN_LOCKED表示屏幕锁定的公共事件COMMON_EVENT_SCREEN_UNLOCKED表示屏幕解锁的公共事件COMMON_EVENT_BATTERY_CHANGED表示电池充电状态、电平和其他信息发生变化的公共事件的动作COMMON_EVENT_USB_DEVICE_ATTACHED当用户设备作为USB主机时提示USB设备已挂载COMMON_EVENT_USB_DEVICE_DETACHED当用户设备作为USB主机时提示USB设备被卸载其中上面的屏幕亮屏和灭屏屏幕锁屏和解锁接电源适配器和拔掉电源适配器、开启wifi和断开wifi、插入USB设备/拔掉USB设备等。

其中对于手机、平板、PC来说上面的几个事件都比较常用尤其在设备后台灭屏降功耗的时候比较有用。

COMMON_EVENT_POWER_CONNECTED/COMMON_EVENT_POWER_DISCONNECTED这两个事件对于手机和平板来说就是接电源和拔掉电源在PC中就是AC和DC了。

resource_schedule_service开源仓地址https://gitee.com/openharmony/resourceschedule_resource_schedule_service

在资源调度子系统中提供系统事件的感知以及分发例如应用启动、退出、亮灭屏等。

如果需要获取系统事件并且进行相关资源调度那么可以选择以插件形式加入资源调度服务中。

作为资源调度子系统的子模块智能分组模块通过系统内应用前后台切换、用户焦点输入、后台任务的执行状态决策进程的分组调度策略并支持通过配置将调度策略映射到不同的CGROUP分组为系统的性能、功耗均衡调度提供决策依据。

同时该模块向资源调度框架转发应用状态、焦点状态、后台任务状态等系统事件供插件订阅。

resource_schedule_service是接收事件决策调度策略和执行调度机制的引擎其架构图示如下

1、事件管理器包含了使用对外接口直接感知系统事件以及使用监听形式感知系统事件功能。

2、应用智能分组该组件接收应用生命周期变更的事件决策应用的分组优先级是全局资源调度的根本依据。

3、插件管理器负责产品对应资源调度插件的加载接收系统和应用的事件并根据插件的订阅情况将事件分发给插件。

4、SOC统一调频服务该服务主要是从SOC统一调频插件中接收调频事件进行相关的调频仲裁最终使用内核接口设置CPU频率策略。

resource_schedule_service主要通过插件的形式进行扩展和实现系统全局资源的调度功能插件以动态链接的形式运行不同产品可以选择不同的插件进行加载。

目前已知的插件有智能感知调度插件、设备状态管理插件、SOC统一调频插件。

其中SOC统一调频插件的服务包含在resource_schedule_service中而另外两个插件的服务包含在其它仓内最终都是根据系统事件设置调度策略到内核中进行实施。

1插件Check_List

插件名插件功能简介插件订阅事件进程基线内存KB插件内存基线(KB)插件的事件执行效率插件新增线程插件关联进程插件需要的权限插件负责人soc_perfcpu提频RES_TYPE_APP_STATE_CHANGE;

RES_TYPE_CLICK_RECOGNIZERES_TYPE_PUSH_PAGE;

RES_TYPE_SLIDE_RECOGNIZE;常驻5918

动态5922常驻:88

动态:88无无socperf_service无HaoyangTframe_aware_sched智能感知调度RES_TYPE_WINDOW_FOCUS;

RES_TYPE_APP_STATE_CHANGE常驻4537常驻109暂无rongkunshicomponent_sched外设调度RES_TYPE_SCREEN_STATUSRES_TYPE_APP_STATE_CHANGERES_TYPE_ABILITY_STATE_CHANGERES_TYPE_EXTENSION_STATE_CHANGERES_TYPE_PROCESS_STATE_CHANGERES_TYPE_WINDOW_FOCUS;

RES_TYPE_DEVICE_STILL_STATE_CHANGE;常驻常驻

动态:暂无linyunxuan

事件type事件用途事件value事件payload格式事件打点延时:订阅事件插件RES_TYPE_SCREEN_STATUS屏幕状态0屏幕暗

1屏幕亮无需payloadRES_TYPE_APP_STATE_CHANGEAPP状态改变事件value

app

state{“pid”?,“uid”?,“bundleName”“?”}10mssoc_perf;

frame_awareRES_TYPE_ABILITY_STATE_CHANGEABILITY状态改变事件value

ability

state{“pid”?,“uid”?,“bundleName”“?”}RES_TYPE_EXTENSION_STATE_CHANGEEXTENSION状态改变事件value

extension

state{“pid”?,“uid”?,“bundleName”“?”}RES_TYPE_PROCESS_STATE_CHANGE进程状态事件0创建

1销毁{“pid”?,“uid”?,“bundleName”“?”}10msframe_awareRES_TYPE_WINDOW_FOCUS窗口聚焦事件0聚焦1不聚焦{“pid”?,“uid”?,“bundleName”“?”,

“windowId”?,“windowType”?,displayId?}10mssoc_perf

frame_awareRES_TYPE_TRANSIENT_TASK瞬态任务事件0开始

1结束{“pid”?,“uid”?,“bundleName”“?”}RES_TYPE_CONTINUOUS_TASK长时任务事件0开始

1结束{“pid”?,“uid”?,“abilityName”“?”}RES_TYPE_CGROUP_ADJUSTERcgroup改变事件0:

进程组分组变化

线程分组变化{“pid”?,“uid”?,“name”“?”,“oldGroup”?,

“newGroup”?}RES_TYPE_CLICK_RECOGNIZEace手势点击识别器无无10mssoc_perfRES_TYPE_PUSH_PAGEace

pipeline_context.cpp::PushPage()无无10mssoc_perfRES_TYPE_SLIDE_RECOGNIZEace

slide

end无10mssoc_perfRES_TYPE_WINDOW_VISIBILITY_CHANGE窗口可见性状态变化事件1:

不可见无--RES_TYPE_REPORT_MMI_PROCESS上报mmi_service线程IDmmi_service线程号{“uid”?,

“pid”?}--RES_TYPE_REPORT_RENDER_THREAD上报应用的RSRender线程IDRSRenderThread线程号{“uid”?,

“pid”?}--RES_TYPE_APP_INSTALL_UNINSTALL应用安装和卸载事件value

卸载,

安装{“uid”?,“bundleName”?}--RES_TYPE_WIFI_CONNECT_STATE_CHANGEwifi连接状态事件1:空闲,

2:连接中,

5:已断开无需payload--RES_TYPE_USER_SWITCH用户切换事件value:

切换到的目标用户id无需payload--RES_TYPE_USER_REMOVE用户删除事件value:

删除的用户id无需payload--RES_TYPE_SCREEN_LOCK锁屏和解锁事件0解锁

1锁屏无需payload--RES_TYPE_CALL_STATE_UPDATE电话状态改变事件value电话状态无需payload--RES_TYPE_AUDIO_RENDER_STATE_CHANGE音频流状态改变事件value音频流状态{“uid”?,“sessionId”?}--RES_TYPE_AUDIO_RING_MODE_CHANGE声音模式改变事件0响铃模式

1静音模式无需payload--RES_TYPE_AUDIO_VOLUME_KEY_CHANGE音量改变事件value音量大小{“volumeType”?}--RES_TYPE_POP_PAGEace

pipeline_context.cpp::PopPage();无{“pid”?,“uid”?,“bundleName”“?”,“abilityName”“?”,

“pageUrl”“?”}--RES_TYPE_WEB_GESTUREweb手势事件无无--RES_TYPE_SHOW_REMOTE_ANIMATION动画开始事件0动画开始

1动画结束{“srcPid”?}--RES_TYPE_DEVICE_STILL_STATE_CHANGE当前设备运动状态和静止状态转变事件-1

无效值0

转变为运动状态1转变为静止状态无--RES_TYPE_RESIZE_WINDOW窗口缩放事件0

窗口缩放开始1窗口缩放结束无--RES_TYPE_MOVE_WINDOW窗口拖拽事件0

窗口拖拽开始1窗口拖拽结束无--RES_TYPE_LOAD_PAGE页面加载事件0

页面加载开始1页面加载结束无--RES_TYPE_DRAG_STATUS_BAR状态栏下拉事件0状态栏下拉开始

1状态栏下拉结束无--RES_TYPE_REPORT_SCENE_BOARD报告sceneBoard进程信息进程PID{“uid”?,

“mainTid”?,

“bundleName”?}--RES_TYPE_REPORT_KEY_THREAD报告关键线程0新增1删除{“uid”?,

“pid”?,

“role”?}--RES_TYPE_REPORT_WINDOW_STATE报告窗口状态0新增1删除{“uid”?,

“pid”?,

inactive}--RES_TYPE_REPORT_SCENE_SCHED报告场景状态0场景进入1场景退出{“uid”?,

“sceneId”?,}--

通过查看https://gitee.com/openharmony/resourceschedule_resource_schedule_service中的源代码我们可以看到event_controller.cpp中的void

EventController::SystemAbilityStatusChangeListener::OnAddSystemAbility(

int32_t

EventController::SystemAbilityStatusChangeListener::OnAddSystemAbility(int32_t

systemAbilityId,

matchingSkills;matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_INSTALLATION_STARTED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_ADDED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_REMOVED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_REPLACED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_SCREEN_ON);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_SCREEN_OFF);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USER_SWITCHED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USER_REMOVED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_TIMEZONE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_BUNDLE_REMOVED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_FULLY_REMOVED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_TIME_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_NITZ_TIME_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_NITZ_TIMEZONE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_CHARGING);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USB_DEVICE_ATTACHED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_DISCHARGING);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USB_DEVICE_DETACHED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_CALL_STATE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_WIFI_P2P_STATE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_POWER_SAVE_MODE_CHANGED);matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_BOOT_COMPLETED);matchingSkills.AddEvent(DATA_SHARE_READY);CommonEventSubscribeInfo

subscriberInfo(matchingSkills);subscriber_

std::make_sharedEventController(subscriberInfo);SubscribeCommonEvent(subscriber_);SubscribeLockScreenCommonEvent();

}void

EventController::SystemAbilityStatusChangeListener::SubscribeLockScreenCommonEvent()

{MatchingSkills

lockScreenSkills;lockScreenSkills.AddEvent(common.event.UNLOCK_SCREEN);lockScreenSkills.AddEvent(common.event.LOCK_SCREEN);CommonEventSubscribeInfo

subscriberInfo(lockScreenSkills);subscriberInfo.SetPublisherBundleName(SCENE_BOARD_NAME);lockScreenSubscriber_

std::make_sharedEventController(subscriberInfo);SubscribeCommonEvent(lockScreenSubscriber_);

}inline

SubscribeCommonEvent(std::shared_ptrEventController

subscriber)

(CommonEventManager::SubscribeCommonEvent(subscriber))

{RESSCHED_LOGI(SubscribeCommonEvent

ok);}

{RESSCHED_LOGW(SubscribeCommonEvent

fail);HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::RSS,

INIT_FAULT,

HiviewDFX::HiSysEvent::EventType::FAULT,COMPONENT_NAME,

MAIN,ERR_TYPE,

EventController::OnReceiveEvent(const

data)这个函数接口中转换公共事件到自定义枚举事件的代码如下

void

EventController::OnReceiveEvent(const

data)

want.GetAction();RESSCHED_LOGI(Recieved

common

CommonEventSupport::COMMON_EVENT_SCREEN_ON)

{ReportDataInProcess(ResType::RES_TYPE_SCREEN_STATUS,

ResType::ScreenStatus::SCREEN_ON,

payload);return;}if

CommonEventSupport::COMMON_EVENT_SCREEN_OFF)

{ReportDataInProcess(ResType::RES_TYPE_SCREEN_STATUS,

ResType::ScreenStatus::SCREEN_OFF,

payload);return;}if

CommonEventSupport::COMMON_EVENT_CONNECTIVITY_CHANGE)

{int32_t

data.GetCode();HandleConnectivityChange(want,

code,

CommonEventSupport::COMMON_EVENT_USER_SWITCHED)

{int32_t

data.GetCode();ReportDataInProcess(ResType::RES_TYPE_USER_SWITCH,

payload);return;}if

CommonEventSupport::COMMON_EVENT_USER_REMOVED)

{int32_t

data.GetCode();ReportDataInProcess(ResType::RES_TYPE_USER_REMOVE,

payload);return;}if

{ReportDataInProcess(ResType::RES_TYPE_SCREEN_LOCK,

ResType::ScreenLockStatus::SCREEN_UNLOCK,

payload);return;}if

{ReportDataInProcess(ResType::RES_TYPE_SCREEN_LOCK,

ResType::ScreenLockStatus::SCREEN_LOCK,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_CALL_STATE_CHANGED)

{payload[state]

-1);ReportDataInProcess(ResType::RES_TYPE_CALL_STATE_CHANGED,

static_castint64_t(data.GetCode()),

payload);return;}if

{DataShareIsReady();return;}handleEvent(data.GetCode(),

action,

EventController::handleEvent(int32_t

userId,

CommonEventSupport::COMMON_EVENT_TIMEZONE_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_TIMEZONE_CHANGED,

ResType::RES_TYPE_TIMEZONE_CHANGED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_TIME_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_TIME_CHANGED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_NITZ_TIME_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_NITZ_TIME_CHANGED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_NITZ_TIMEZONE_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_NITZ_TIMEZONE_CHANGED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_CHARGING)

{ReportDataInProcess(ResType::RES_TYPE_CHARGING_DISCHARGING,

ResType::ChargeStatus::EVENT_CHARGING,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_DISCHARGING)

{ReportDataInProcess(ResType::RES_TYPE_CHARGING_DISCHARGING,

ResType::ChargeStatus::EVENT_DISCHARGING,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_USB_DEVICE_ATTACHED)

{ReportDataInProcess(ResType::RES_TYPE_USB_DEVICE,

ResType::UsbDeviceStatus::USB_DEVICE_ATTACHED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_USB_DEVICE_DETACHED)

{ReportDataInProcess(ResType::RES_TYPE_USB_DEVICE,

ResType::UsbDeviceStatus::USB_DEVICE_DETACHED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_WIFI_P2P_STATE_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_WIFI_P2P_STATE_CHANGED,

payload);return;}if

EventFwk::CommonEventSupport::COMMON_EVENT_POWER_SAVE_MODE_CHANGED)

{ReportDataInProcess(ResType::RES_TYPE_POWER_MODE_CHANGED,

payload);return;}handleO***rEvent(userId,

action,

EventController::handleO***rEvent(int32_t

userId,

EventFwk::CommonEventSupport::COMMON_EVENT_BOOT_COMPLETED)

boot

completed);ReportDataInProcess(ResType::RES_TYPE_BOOT_COMPLETED,ResType::BootCompletedStatus::START_BOOT_COMPLETED,

payload);return;}

payload:pid,uid,bundleNameRES_TYPE_APP_STATE_CHANGE

1,//

payload:pid,uid,bundleNameRES_TYPE_ABILITY_STATE_CHANGE

2,//

payload:pid,uid,bundleNameRES_TYPE_EXTENSION_STATE_CHANGE

3,//

payload:pid,uid,bundleNameRES_TYPE_PROCESS_STATE_CHANGE

4,//

payload:pid,uid,bundleName,windowId,windowType,displayIdRES_TYPE_WINDOW_FOCUS

5,//

payload:pid,uid,bundleNameRES_TYPE_TRANSIENT_TASK

6,//

payload:pid,uid,abilityNameRES_TYPE_CONTINUOUS_TASK

7,/*

pid,uid,name,oldGroup,newGroup*/RES_TYPE_CGROUP_ADJUSTER

8,//

pipeline_context.cpp::PushPage();

value

push_page_completeRES_TYPE_PUSH_PAGE

10,//

payload:pid,uid,windowId,windowTypeRES_TYPE_WINDOW_VISIBILITY_CHANGE

12,//

payload:uid,pidRES_TYPE_REPORT_MMI_PROCESS

13,//

payload:uid,pidRES_TYPE_REPORT_RENDER_THREAD

14,//

payload:uid,bundleNameRES_TYPE_APP_INSTALL_UNINSTALL

15,//

5:disconnectedRES_TYPE_WIFI_CONNECT_STATE_CHANGE

16,//

disconnected.RES_TYPE_BLUETOOTH_A2DP_CONNECT_STATE_CHANGE

20,//

identityRES_TYPE_NETWORK_LATENCY_REQUEST

21,//

payload:uid,sessionIdRES_TYPE_AUDIO_RENDER_STATE_CHANGE

24,//

RINGER_MODE_VIBRATERES_TYPE_AUDIO_RING_MODE_CHANGE

25,RES_TYPE_AUDIO_VOLUME_KEY_CHANGE

26,//

ability_manager_service.cpp::StartAbilityInner().//

specifically

SPECIFIED.RES_TYPE_APP_ABILITY_START

27,//

pipeline_context.cpp::PopPage();

value

exit)RES_TYPE_DEVICE_STILL_STATE_CHANGE

30,//

end.RES_TYPE_SHOW_REMOTE_ANIMATION

33,//

disconnectRES_TYPE_REPORT_CAMERA_STATE

35,//

proxiedRES_TYPE_RUNNINGLOCK_STATE

36,//

bundleNameRES_TYPE_REPORT_SCENE_BOARD

38,//

inactiveRES_TYPE_REPORT_WINDOW_STATE

40,//

sceneIdRES_TYPE_REPORT_SCENE_SCHED

41,//

tidRES_TYPE_WEBVIEW_AUDIO_STATUS_CHANGE

46,//

changedRES_TYPE_TIMEZONE_CHANGED

50,//

statusRES_TYPE_CONNECTION_OBSERVER

51,//

eventRES_TYPE_AV_SESSION_ON_SESSION_CREATE

52,//

eventRES_TYPE_AV_SESSION_ON_SESSION_RELEASE

53,//

eventRES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE

54,//

eventRES_TYPE_ON_APP_STATE_CHANGED

55,//

eventRES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED

56,//

changeRES_TYPE_NITZ_TIME_CHANGED

59,RES_TYPE_NITZ_TIMEZONE_CHANGED

60,RES_TYPE_CHARGING_DISCHARGING

63,RES_TYPE_WIFI_P2P_STATE_CHANGED

64,//

radarRES_TYPE_APP_ASSOCIATED_START

65,//report

beginRES_TYPE_SOCPERF_CUST_EVENT_BEGIN

67,//

endRES_TYPE_SOCPERF_CUST_EVENT_END

68,//

eventRES_TYPE_WINDOW_DRAWING_CONTENT_CHANGE

69,//

stopRES_TYPE_REPORT_SCREEN_CAPTURE

70,//

stateRES_TYPR_SCREEN_COLLABROATION

75,//

appRES_TYPE_SA_CONTROL_APP_EVENT

76,//

machinepayload:cpuPercentRES_TYPE_SYSTEM_CPU_LOAD

77,//

pid.RES_TYPE_REPORT_DISTRIBUTE_TID

81,//

stopRES_TYPE_WEBVIEW_SCREEN_CAPTURE

83,//

playingRES_TYPE_WEBVIEW_VIDEO_STATUS_CHANGE

84,//

statusRES_TYPE_LOCATION_STATUS_CHANGE

85,//

playbackRES_TYPE_AUDIO_SILENT_PLAYBACK

86,//

mode.RES_TYPE_DEVICE_MODE_STATUS

88,//

changeRES_TYPE_REPORT_DISTRIBUTE_COMPONENT_CHANGE

89,//

start/endRES_TYPE_FORM_STATE_CHANGE_EVENT

91,//

changedRES_TYPE_POWER_MODE_CHANGED

92,//

changedRES_TYPE_THERMAL_SCENARIO_REPORT

93,//

completedRES_TYPE_BOOT_COMPLETED

94,//

startupRES_TYPE_CONTINUOUS_STARTUP

95,//

activatingRES_TYPE_ACCOUNT_ACTIVATING

96,//

rendererRES_TYPE_AUDIO_RENDERER_SILENT_PLAYBACK

97,//

installRES_TYPE_CONTINUOUS_INSTALL

98,//

updatedRES_TYPE_FIRST_BOOT_AFTER_SYSTEM_UPGRADE

99,//

sceneRES_TYPE_BACKGROUND_PERCEIVABLE_SCENE

100,//

sceneRES_TYPE_USER_INTERACTION_SCENE

101,//

stopRES_TYPE_ONLY_PERF_APP_COLD_START

104,//

updateRES_TYPE_CLOUD_CONFIG_UPDATE

107,//

changeRES_TYPE_SYSTEM_ABILITY_STATUS_CHANGE

108,//

changeRES_TYPE_MMI_STATUS_CHANGE

109,//

changeRES_TYPE_OUTPUT_DEVICE_CHANGE

110,//

changeRES_TYPE_BT_SERVICE_EVENT

112,//

changeRES_TYPE_BMM_MONITER_CHANGE_EVENT

113,//

updateRES_TYPE_RSS_CLOUD_CONFIG_UPDATE

115,//

downRES_TYPE_MMI_INPUT_POWER_KEY

117,//

applicationSYNC_RES_TYPE_THAW_ONE_APP,//

get

stateSYNC_RES_TYPE_GET_ALL_SUSPEND_STATE,//

get

dataSYNC_RES_TYPE_GET_THERMAL_DATA,//

check

process,SYNC_RES_TYPE_SHOULD_FORCE_KILL_PROCESS,//

report

statusSYNC_RES_TYPE_REQUEST_MUTEX_STATUS

500,//

startSYNC_RES_TYPE_CHECK_MUTEX_BEFORE_START

501,//

OHOS接着在调频插件socperf_plugin、待机插件device_standby_plugin、分组策略插件cgroup_sched_plugin中添加对资源调度内部事件的订阅和监听回调处理。

接口名接口描述function

插件初始化的时候指定需要注册监听的事件。

在这些事件发生的时候框架会依次分发给各个插件

此时插件需要快速处理消息接收进行资源调度需要有耗时任务则需另起线程处理处理完成后返回。

插件事件处理约束

1、插件可以用C/C实现。

2、插件的事件处理必须快速完成超过1ms会打印相关告警超过10ms框架认为插件异常而进行插件退出操作。

以待机插件device_standby_plugin为例其代码实现路径为device_standby_plugin.cpp

插件初始化

{STANDBYSERVICE_LOGI(DeviceStandbyPlugin::OnPluginInit

lib

false;}DeviceStandbyPlugin::GetInstance().Init();STANDBYSERVICE_LOGI(DeviceStandbyPlugin::OnPluginInit

success.);return

{resTypes_.insert(RES_TYPE_APP_INSTALL_UNINSTALL);resTypes_.insert(RES_TYPE_SCREEN_STATUS);resTypes_.insert(RES_TYPE_TIME_CHANGED);resTypes_.insert(RES_TYPE_NITZ_TIME_CHANGED);resTypes_.insert(RES_TYPE_TIMEZONE_CHANGED);resTypes_.insert(RES_TYPE_NITZ_TIMEZONE_CHANGED);resTypes_.insert(RES_TYPE_CHARGING_DISCHARGING);resTypes_.insert(RES_TYPE_USB_DEVICE);resTypes_.insert(RES_TYPE_CALL_STATE_CHANGED);resTypes_.insert(RES_TYPE_WIFI_P2P_STATE_CHANGED);resTypes_.insert(RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED);resTypes_.insert(RES_TYPE_POWER_MODE_CHANGED);resTypes_.insert(RES_TYPE_CLICK_RECOGNIZE);resTypes_.insert(RES_TYPE_MMI_INPUT_POWER_KEY);for

(auto

{PluginMgr::GetInstance().SubscribeResource(LIB_NAME,

resType);}STANDBYSERVICE_LOGI(DevicesStandbyPlugin::Init

success);

{DeviceStandbyPlugin::GetInstance().DispatchResource(data);STANDBYSERVICE_LOGD(DeviceStandbyPlugin::OnDispatchResource

success.);

{DeviceStandbyPlugin::GetInstance().Disable();STANDBYSERVICE_LOGI(DeviceStandbyPlugin::OnPluginDisable

success.);

{PluginMgr::GetInstance().UnSubscribeResource(LIB_NAME,

resType);}resTypes_.clear();STANDBYSERVICE_LOGI(DevicesStandbyPlugin::Disable

success);

待机部件device_standby仓的源代码地址为https://gitee.com/openharmony/resourceschedule_device_standby

设备待机部件为提高设备续航降低设备功耗在设备进入待机空闲状态时系统会限制后台应用使用资源。

开发者可以根据自身情况为自己的应用申请纳入待机资源管控或者暂时不被待机资源管控。

设备待机部件整体架构图

那么我们以亮屏和灭屏事件为例看一下设备待机部件device_standby是如何使用资源调度部件resource_schedule_service中定义的事件的

我们使用git

https://gitee.com/openharmony/resourceschedule_device_standby.git命令下载好设备待机部件仓的源代码后使用VScode打开源代码搜索RES_TYPE_SCREEN_STATUS这个亮屏状态关键字如下图所示

可以看到utils\common\include\res_type.h中保持了一份资源调度模块的事件枚举

namespace

payload:pid,uid,bundleNameRES_TYPE_APP_STATE_CHANGE

1,//

payload:pid,uid,bundleNameRES_TYPE_ABILITY_STATE_CHANGE

2,//

payload:pid,uid,bundleNameRES_TYPE_EXTENSION_STATE_CHANGE

3,//

payload:pid,uid,bundleNameRES_TYPE_PROCESS_STATE_CHANGE

4,//

payload:pid,uid,bundleName,windowId,windowType,displayIdRES_TYPE_WINDOW_FOCUS

5,//

payload:pid,uid,bundleNameRES_TYPE_TRANSIENT_TASK

6,//

payload:pid,uid,abilityNameRES_TYPE_CONTINUOUS_TASK

7,/*

pid,uid,name,oldGroup,newGroup*/RES_TYPE_CGROUP_ADJUSTER

8,//

pipeline_context.cpp::PushPage();

value

push_page_completeRES_TYPE_PUSH_PAGE

10,//

payload:pid,uid,windowId,windowTypeRES_TYPE_WINDOW_VISIBILITY_CHANGE

12,//

payload:uid,pidRES_TYPE_REPORT_MMI_PROCESS

13,//

payload:uid,pidRES_TYPE_REPORT_RENDER_THREAD

14,//

payload:uid,bundleNameRES_TYPE_APP_INSTALL_UNINSTALL

15,//

5:disconnectedRES_TYPE_WIFI_CONNECT_STATE_CHANGE

16,//

disconnected.RES_TYPE_BLUETOOTH_A2DP_CONNECT_STATE_CHANGE

20,//

identityRES_TYPE_NETWORK_LATENCY_REQUEST

21,//

payload:uid,sessionIdRES_TYPE_AUDIO_RENDER_STATE_CHANGE

24,//

RINGER_MODE_VIBRATERES_TYPE_AUDIO_RING_MODE_CHANGE

25,RES_TYPE_AUDIO_VOLUME_KEY_CHANGE

26,//

ability_manager_service.cpp::StartAbilityInner().//

specifically

SPECIFIED.RES_TYPE_APP_ABILITY_START

27,//

pipeline_context.cpp::PopPage();

value

exit)RES_TYPE_DEVICE_STILL_STATE_CHANGE

30,//

end.RES_TYPE_SHOW_REMOTE_ANIMATION

33,//

disconnectRES_TYPE_REPORT_CAMERA_STATE

35,//

proxiedRES_TYPE_RUNNINGLOCK_STATE

36,//

bundleNameRES_TYPE_REPORT_SCENE_BOARD

38,//

inactiveRES_TYPE_REPORT_WINDOW_STATE

40,//

sceneIdRES_TYPE_REPORT_SCENE_SCHED

41,//

tidRES_TYPE_WEBVIEW_AUDIO_STATUS_CHANGE

46,//

changedRES_TYPE_TIMEZONE_CHANGED

50,//

statusRES_TYPE_CONNECTION_OBSERVER

51,//

eventRES_TYPE_AV_SESSION_ON_SESSION_CREATE

52,//

eventRES_TYPE_AV_SESSION_ON_SESSION_RELEASE

53,//

eventRES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE

54,//

eventRES_TYPE_ON_APP_STATE_CHANGED

55,//

eventRES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED

56,//

59,RES_TYPE_NITZ_TIMEZONE_CHANGED

60,RES_TYPE_CHARGING_DISCHARGING

63,RES_TYPE_WIFI_P2P_STATE_CHANGED

64,//

changedRES_TYPE_POWER_MODE_CHANGED

92,//

downRES_TYPE_MMI_INPUT_POWER_KEY

117,//

RES_TYPE_EXTENSION_STATE_CHANGE,

},{

RES_TYPE_WINDOW_VISIBILITY_CHANGE,

},{

RES_TYPE_APP_INSTALL_UNINSTALL,

},{

RES_TYPE_WIFI_CONNECT_STATE_CHANGE,

},{

RES_TYPE_BLUETOOTH_A2DP_CONNECT_STATE_CHANGE,

BLUETOOTH_A2DP_CONNECT_STATE_CHANGE

},{

RES_TYPE_NETWORK_LATENCY_REQUEST,

},{

RES_TYPE_AUDIO_RENDER_STATE_CHANGE,

},{

RES_TYPE_AUDIO_RING_MODE_CHANGE,

},{

RES_TYPE_AUDIO_VOLUME_KEY_CHANGE,

},{

RES_TYPE_DEVICE_STILL_STATE_CHANGE,

},{

RES_TYPE_SHOW_REMOTE_ANIMATION,

},{

RES_TYPE_WEBVIEW_AUDIO_STATUS_CHANGE,

RES_TYPE_WEBVIEW_AUDIO_STATUS_CHANGE

},{

RES_TYPE_NITZ_TIMEZONE_CHANGED,

},{

RES_TYPE_WIFI_P2P_STATE_CHANGED,

RES_TYPE_WIFI_P2P_STATE_CHANGED

},{

RES_TYPE_AV_SESSION_ON_SESSION_CREATE,

RES_TYPE_AV_SESSION_ON_SESSION_CREATE

},{

RES_TYPE_AV_SESSION_ON_SESSION_RELEASE,

RES_TYPE_AV_SESSION_ON_SESSION_RELEASE

},{

RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE,

RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE

},{

RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED,

RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED

},{

OHOS并且在services\core\src\standby_service_impl.cpp中的

StandbyServiceImpl::HandleCommonEvent接口实现了对事件的统一处理代码如下

ErrCode

StandbyServiceImpl::HandleCommonEvent(const

uint32_t

{STANDBYSERVICE_LOGI(HandleCommonEvent

resType

ResType::RES_TYPE_SCREEN_STATUS:HandleScreenStateChanged(value);break;case

ResType::RES_TYPE_CHARGING_DISCHARGING:HandleChargeStateChanged(value);break;case

ResType::RES_TYPE_USB_DEVICE:if

(value

{DispatchEvent(StandbyMessage(StandbyMessageType::COMMON_EVENT,EventFwk::CommonEventSupport::COMMON_EVENT_USB_DEVICE_ATTACHED));}

else

{DispatchEvent(StandbyMessage(StandbyMessageType::COMMON_EVENT,EventFwk::CommonEventSupport::COMMON_EVENT_USB_DEVICE_DETACHED));}break;case

ResType::RES_TYPE_CALL_STATE_CHANGED:HandleCallStateChanged(sceneInfo);break;case

ResType::RES_TYPE_WIFI_P2P_STATE_CHANGED:HandleP2PStateChanged(value);break;case

ResType::RES_TYPE_CLICK_RECOGNIZE:HandleScreenClickRecognize(value);break;case

ResType::RES_TYPE_MMI_INPUT_POWER_KEY:HandleMmiInputPowerKeyDown(value);break;

#ifdef

STANDBY_POWER_MANAGER_ENABLEcase

ResType::RES_TYPE_POWER_MODE_CHANGED:HandlePowerModeChanged(static_castPowerMgr::PowerMode(value));break;

#endifcase

ResType::RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED:HandleResourcesStateChanged(value,

sceneInfo);break;default:AppEventHandler(resType,

value,

StandbyServiceImpl::HandleScreenStateChanged(const

int64_t

{DispatchEvent(StandbyMessage(StandbyMessageType::COMMON_EVENT,EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON));}

else

{DispatchEvent(StandbyMessage(StandbyMessageType::COMMON_EVENT,EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF));}



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback