From 789b97629ebc68e8d6650f6ab09d7c5f55f9b098 Mon Sep 17 00:00:00 2001 From: RayShih Date: Thu, 28 Apr 2022 15:37:54 +0800 Subject: [PATCH] sync 3.2 canary contents to 3.1 Release branch Signed-off-by: RayShih --- en/application-dev/ability/Readme-EN.md | 20 +- en/application-dev/ability/ability-brief.md | 31 + en/application-dev/ability/fa-formability.md | 2 +- en/application-dev/ability/fa-pageability.md | 12 +- .../ability/figures/ExtensionAbility.png | Bin 0 -> 37803 bytes .../ability/figures/continuation-info.png | Bin 0 -> 39231 bytes .../ability/figures/favsstage.png | Bin 0 -> 24752 bytes .../ability/figures/lifecycle.png | Bin 0 -> 31976 bytes .../ability/figures/stage-call.png | Bin 0 -> 3003 bytes .../figures/stageabilitylifecyclecallback.png | Bin 0 -> 24197 bytes .../ability/figures/stageconcept.png | Bin 0 -> 77887 bytes .../ability/figures/stagedesign.png | Bin 0 -> 54230 bytes .../ability/figures/stageprocessmodel.png | Bin 0 -> 27080 bytes .../public_sys-resources/icon-caution.gif | Bin 0 -> 580 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 580 bytes .../public_sys-resources/icon-note.gif | Bin 0 -> 394 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 406 bytes .../ability/public_sys-resources/icon-tip.gif | Bin 0 -> 253 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 580 bytes .../ability/stage-ability-continuation.md | 229 +++++++ en/application-dev/ability/stage-ability.md | 276 ++++++++ en/application-dev/ability/stage-brief.md | 97 +++ en/application-dev/ability/stage-call.md | 250 ++++++++ .../ability/stage-formextension.md | 348 +++++++++++ .../ability/stage-serviceextension.md | 87 +++ en/application-dev/application-dev-website.md | 1 + .../reference/apis/js-apis-ability-context.md | 497 +++++++++++++++ .../apis/js-apis-abilitystagecontext.md | 34 + .../apis/js-apis-application-ability.md | 591 ++++++++++++++++++ .../js-apis-application-abilityConstant.md | 64 ++ .../js-apis-application-abilityMonitor.md | 28 + .../apis/js-apis-application-abilitystage.md | 101 +++ .../apis/js-apis-application-context.md | 81 +++ .../reference/apis/js-apis-eventhub.md | 140 +++++ .../apis/js-apis-extension-context.md | 16 + .../apis/js-apis-extensionrunninginfo.md | 57 ++ .../reference/apis/js-apis-formextension.md | 221 +++++++ .../apis/js-apis-formextensioncontext.md | 63 ++ .../apis/js-apis-permissionrequestresult.md | 17 + .../apis/js-apis-service-extension-ability.md | 163 +++++ .../apis/js-apis-service-extension-context.md | 223 +++++++ .../apis/js-apis-uripermissionmanager.md | 81 +++ zh-cn/application-dev/ability/Readme-CN.md | 27 +- .../application-dev/ability/ability-brief.md | 34 + .../ability/ability-delegator.md | 71 ++- .../ability/context-userguide.md | 238 +++++++ zh-cn/application-dev/ability/fa-brief.md | 3 +- .../application-dev/ability/fa-formability.md | 2 +- .../application-dev/ability/fa-pageability.md | 3 +- .../ability/fa-serviceability.md | 2 +- .../AbilityComponentInstanceMission.png | Bin 0 -> 81278 bytes .../ability/figures/ExtensionAbility.png | Bin 0 -> 21335 bytes .../ability/figures/contextIntroduction.png | Bin 0 -> 56717 bytes .../ability/figures/continuation-info.png | Bin 0 -> 13672 bytes .../ability/figures/favsstage.png | Bin 0 -> 24752 bytes .../ability/figures/lifecycle.png | Bin 0 -> 31976 bytes .../page-ability-lifecycle-callbacks.png | Bin 0 -> 50304 bytes .../ability/figures/stage-call.png | Bin 0 -> 3003 bytes .../figures/stageabilitylifecyclecallback.png | Bin 0 -> 24197 bytes .../ability/figures/stageconcept.png | Bin 0 -> 34975 bytes .../ability/figures/stagedesign.png | Bin 0 -> 33494 bytes .../ability/figures/stageprocessmodel.png | Bin 0 -> 27080 bytes .../ability/stage-ability-continuation.md | 232 +++++++ .../application-dev/ability/stage-ability.md | 276 ++++++++ zh-cn/application-dev/ability/stage-brief.md | 97 +++ zh-cn/application-dev/ability/stage-call.md | 247 ++++++++ .../ability/stage-formextension.md | 345 ++++++++++ .../ability/stage-serviceextension.md | 82 +++ .../application-dev-website.md | 19 +- 69 files changed, 5357 insertions(+), 51 deletions(-) create mode 100644 en/application-dev/ability/ability-brief.md create mode 100644 en/application-dev/ability/figures/ExtensionAbility.png create mode 100644 en/application-dev/ability/figures/continuation-info.png create mode 100644 en/application-dev/ability/figures/favsstage.png create mode 100644 en/application-dev/ability/figures/lifecycle.png create mode 100644 en/application-dev/ability/figures/stage-call.png create mode 100644 en/application-dev/ability/figures/stageabilitylifecyclecallback.png create mode 100644 en/application-dev/ability/figures/stageconcept.png create mode 100644 en/application-dev/ability/figures/stagedesign.png create mode 100644 en/application-dev/ability/figures/stageprocessmodel.png create mode 100644 en/application-dev/ability/public_sys-resources/icon-caution.gif create mode 100644 en/application-dev/ability/public_sys-resources/icon-danger.gif create mode 100644 en/application-dev/ability/public_sys-resources/icon-note.gif create mode 100644 en/application-dev/ability/public_sys-resources/icon-notice.gif create mode 100644 en/application-dev/ability/public_sys-resources/icon-tip.gif create mode 100644 en/application-dev/ability/public_sys-resources/icon-warning.gif create mode 100644 en/application-dev/ability/stage-ability-continuation.md create mode 100644 en/application-dev/ability/stage-ability.md create mode 100644 en/application-dev/ability/stage-brief.md create mode 100644 en/application-dev/ability/stage-call.md create mode 100644 en/application-dev/ability/stage-formextension.md create mode 100644 en/application-dev/ability/stage-serviceextension.md create mode 100644 en/application-dev/reference/apis/js-apis-ability-context.md create mode 100644 en/application-dev/reference/apis/js-apis-abilitystagecontext.md create mode 100644 en/application-dev/reference/apis/js-apis-application-ability.md create mode 100644 en/application-dev/reference/apis/js-apis-application-abilityConstant.md create mode 100644 en/application-dev/reference/apis/js-apis-application-abilityMonitor.md create mode 100644 en/application-dev/reference/apis/js-apis-application-abilitystage.md create mode 100644 en/application-dev/reference/apis/js-apis-application-context.md create mode 100644 en/application-dev/reference/apis/js-apis-eventhub.md create mode 100644 en/application-dev/reference/apis/js-apis-extension-context.md create mode 100644 en/application-dev/reference/apis/js-apis-extensionrunninginfo.md create mode 100644 en/application-dev/reference/apis/js-apis-formextension.md create mode 100644 en/application-dev/reference/apis/js-apis-formextensioncontext.md create mode 100644 en/application-dev/reference/apis/js-apis-permissionrequestresult.md create mode 100644 en/application-dev/reference/apis/js-apis-service-extension-ability.md create mode 100644 en/application-dev/reference/apis/js-apis-service-extension-context.md create mode 100644 en/application-dev/reference/apis/js-apis-uripermissionmanager.md create mode 100644 zh-cn/application-dev/ability/ability-brief.md create mode 100644 zh-cn/application-dev/ability/context-userguide.md create mode 100644 zh-cn/application-dev/ability/figures/AbilityComponentInstanceMission.png create mode 100644 zh-cn/application-dev/ability/figures/ExtensionAbility.png create mode 100644 zh-cn/application-dev/ability/figures/contextIntroduction.png create mode 100644 zh-cn/application-dev/ability/figures/continuation-info.png create mode 100644 zh-cn/application-dev/ability/figures/favsstage.png create mode 100644 zh-cn/application-dev/ability/figures/lifecycle.png create mode 100644 zh-cn/application-dev/ability/figures/page-ability-lifecycle-callbacks.png create mode 100644 zh-cn/application-dev/ability/figures/stage-call.png create mode 100644 zh-cn/application-dev/ability/figures/stageabilitylifecyclecallback.png create mode 100644 zh-cn/application-dev/ability/figures/stageconcept.png create mode 100644 zh-cn/application-dev/ability/figures/stagedesign.png create mode 100644 zh-cn/application-dev/ability/figures/stageprocessmodel.png create mode 100644 zh-cn/application-dev/ability/stage-ability-continuation.md create mode 100644 zh-cn/application-dev/ability/stage-ability.md create mode 100644 zh-cn/application-dev/ability/stage-brief.md create mode 100644 zh-cn/application-dev/ability/stage-call.md create mode 100644 zh-cn/application-dev/ability/stage-formextension.md create mode 100644 zh-cn/application-dev/ability/stage-serviceextension.md diff --git a/en/application-dev/ability/Readme-EN.md b/en/application-dev/ability/Readme-EN.md index f32b4f7c02..9c9a162897 100644 --- a/en/application-dev/ability/Readme-EN.md +++ b/en/application-dev/ability/Readme-EN.md @@ -1,10 +1,18 @@ # Ability Development -- [FA Model Overview](fa-brief.md) -- [Page Ability Development](fa-pageability.md) -- [Service Ability Development](fa-serviceability.md) -- [Data Ability Development](fa-dataability.md) -- [FA Widget Development](fa-formability.md) - + - [Ability Framework Overview](ability-brief.md) + - FA Model + - [FA Model Overview](fa-brief.md) + - [Page Ability Development](fa-pageability.md) + - [Service Ability Development](fa-serviceability.md) + - [Data Ability Development](fa-dataability.md) + - [FA Widget Development](fa-formability.md) + - Stage Model + - [Stage Model Overview](stage-brief.md) + - [Ability Development](stage-ability.md) + - [Service Extension Ability Development](stage-serviceextension.md) + - [Ability Continuation Development](stage-ability-continuation.md) + - [Ability Call Development](stage-call.md) + - [Stage Widget Development](stage-formextension.md) - Other - [WantAgent Development](wantagent.md) - [Ability Assistant Usage](ability-assistant-guidelines.md) diff --git a/en/application-dev/ability/ability-brief.md b/en/application-dev/ability/ability-brief.md new file mode 100644 index 0000000000..501b8a9514 --- /dev/null +++ b/en/application-dev/ability/ability-brief.md @@ -0,0 +1,31 @@ +# Ability Framework Overview + +An ability is an abstraction of a functionality that an application can provide. It is the minimum unit for the system to schedule applications. An application can contain one or more **Ability** instances. + +The ability framework model has two forms. + +- FA model, which applies to application development using API 8 and earlier versions. In the FA model, there are Feature Ability (FA) and Particle Ability (PA). The FA supports Page abilities, and the PA supports Service, Data, and Form abilities. +- Stage model, which is introduced since API 9. In the stage model, there are Ability and ExtensionAbility. The ExtensionAbility is further extended to ServiceExtensionAbility, FormExtensionAbility, DataShareExtensionAbility, and more. + +The stage model is designed to make it easier to develop complex applications in the distributed environment. The table below lists the design differences between the two models. + +| Item | FA Model | Stage Model | +| -------------- | ------------------------------------------------------------ | -------------------------------------------------------- | +| Development mode | Web-like APIs are provided. The UI development is the same as that of the stage model. | Object-oriented development mode is provided. The UI development is the same as that of the FA model. | +| Engine instance | Each ability in a process exclusively uses a JS VM engine instance. | Multiple abilities in a process share one JS VM engine instance. | +| Intra-process object sharing| Not supported. | Supported. | +| Bundle description file | The **config.json** file is used to describe the HAP and component information. The component must use a fixed file name.| The **module.json** file is used to describe the HAP and component information. The entry file name can be specified.| +| Component | Four types of components are provided: Page ability (used for UI page display), Service ability (used to provide services), Data ability (used for data sharing), and Form ability (used to provide widgets).| Two types of components are provided: Ability (used for UI page display) and Extension (scenario-based service extension). | + +In addition, the following differences are available in the development process: + +* Different ability types + + ![favsstage](figures/favsstage.png) + +* Different ability lifecycles + + ![lifecycle](figures/lifecycle.png) + + +For details about the two models, see [FA Model Overview](fa-brief.md) and [Stage Model Overview](stage-brief.md). diff --git a/en/application-dev/ability/fa-formability.md b/en/application-dev/ability/fa-formability.md index a39894a015..49f2cf96d7 100644 --- a/en/application-dev/ability/fa-formability.md +++ b/en/application-dev/ability/fa-formability.md @@ -231,7 +231,7 @@ You should override **onDestroy** to delete widget data. } ``` -For details about the persistence method, see [Lightweight Data Store Development](../database/database-storage-guidelines.md). +For details about the persistence method, see [Lightweight Data Store Development](../database/database-preference-guidelines.md). Note that the **Want** passed by the widget host to the widget provider contains a temporary flag, indicating whether the requested widget is a temporary one. diff --git a/en/application-dev/ability/fa-pageability.md b/en/application-dev/ability/fa-pageability.md index 9d26c220e5..e6c097d55d 100644 --- a/en/application-dev/ability/fa-pageability.md +++ b/en/application-dev/ability/fa-pageability.md @@ -34,16 +34,15 @@ Description of ability lifecycle states: You can override the lifecycle callbacks provided by the Page ability in the **app.js/app.ets** file. Currently, the **app.js** file provides only the **onCreate** and **onDestroy** callbacks, and the **app.ets** file provides the full lifecycle callbacks. ### Launch Type -The ability supports three launch types: singleton, multi-instance, and instance-specific. +The ability supports two launch types: singleton and multi-instance. The **launchType** item in the **config.json** file is used to specify the launch type. | Launch Type | Description |Description | | ----------- | ------- |---------------- | | standard | Multi-instance | A new instance is started each time an ability starts.| | singleton | Singleton | Only one instance exists in the system. If an instance already exists when an ability is started, that instance is reused.| -| specified | Instance-specific| The internal service of an ability determines whether to create multiple instances during running.| -By default, **standard** is used. +By default, **singleton** is used. ## Development Guidelines @@ -260,9 +259,6 @@ export default { }, } ``` -### Development Example +## Samples The following sample is provided to help you better understand how to develop a Page ability: - -[DMS](https://gitee.com/openharmony/app_samples/tree/master/ability/DMS) - -This sample describes how to start a local ability and remote ability. +- [`DMS`: Distributed Demo (eTS) (API7)](https://gitee.com/openharmony/app_samples/tree/master/ability/DMS) diff --git a/en/application-dev/ability/figures/ExtensionAbility.png b/en/application-dev/ability/figures/ExtensionAbility.png new file mode 100644 index 0000000000000000000000000000000000000000..eeba9d61b27b3a506d18b2e3cc59a7a4f2036841 GIT binary patch literal 37803 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 Y3(1-}9ou}>kpT!iUHx3vIVCg!0I26YJOBUy literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/figures/favsstage.png b/en/application-dev/ability/figures/favsstage.png new file mode 100644 index 0000000000000000000000000000000000000000..45f6b0ef255b01730dc42023430391e1141291c2 GIT binary patch literal 24752 zcmeFZ2UOGB_b*5jQE3W_3J6FOks2Tr2_^IvAoN~CC-fRXL`6lqNE4#8&{3(&>ir>%IBCxhxIgd{5bXpMCb(XYbGX-qY7pr#pG^BpDeQ zou-D0AsHD3nv9Hmi-sB~d4^0Y0e+GD8>%alRrawhk&#jV2v9W(@Cre=c{-Evf}p>? z@rsMOBK-q+K`OlB;;Np`jsbp1Z{RCX?uB%6L%2CR{dy)YDlRT03K9|n8;OBgMf)4E6`U>KOqaVxmAXNE!GBJdl$3^)*CF zLI5aH^6~L>Hg$H;b_?JYSCa&Rg+Wq4@fB?iBV8R{aVYTJ)6K&f_@(ab=z%0Paq_bd z7Is4d)y1TQC56R+BB-k$(hI1hCL<**Dl8!-B_S*(Mk3{J&PbI-g~31>+#X@?=k|}$ zNK88i*t`5<*w8dsLka4Q#qBR~szG&)HJm)fZJiCn^u58FaFu|c)x|}hn&7IZVgWT

2|TI!K%Q`e;guYl!OTO1MA~P7+{8n3Acuo^}9I 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 literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/figures/lifecycle.png b/en/application-dev/ability/figures/lifecycle.png new file mode 100644 index 0000000000000000000000000000000000000000..694238d99c7e70d16d6bd1a37c86bcd599a9b2f3 GIT binary patch literal 31976 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

DI7`i8J#PuVfh>SSE3EldfC|<7oc$_T@k4yE@ z>hK~Pepyx8-V5HxF6cjxDrCQ(x)H&$; zE>^3ACurrB98dBN{_5F$toCX6~r(r;Qa-5s+ zz4n40@xq|KTy59r`olcZ>&FI~buy*1>_--FAvsQ~r!7*UAL)y_ zhfF{F1ngCkKI?fO8*YT}MH^Qsf{*-8+hW&_66Xyw8c^`ELlbc`K?_=s$Pqh4w`iSh z!Wv}IP+DmfR+8SQyw4$z@a?)dp9M8`Q6eo~Emq!~o%Y`(r9&{^SG2%V?=UX2Qg1wUz5UASp&?HCKi)8n|Tuo1WxCt!mMY~)IJ!_6(nU~g|^ zFUrNl#pztQ5Oz&{N<8nkYM22fy)ETVMp0qoZ@z0(tK1hQ)$^h;xc+WhP^QAmPwsbS zMXwn}=+BBOQ(8u?=6(1*;}4lUoeKHIU!7c{P}Yk}Pj?W^{%nshfj&6y-O{23l^sk? zU%96UkNk}h<9#Ue`}Af4IfOB&VtBeK*90!8s4p!>RzufDhNoKUj8dFHvJReWc|wKo zQM8}UA;D9rUZ#IP6l6lrIdb{fnASR4LrVIJ)#ZW&R?Fz6C88@P4Uio60P!tlZPB1tY8sw^}M`W)crYJ3#M|VvL)LjW#F(1vt6OLq#Gj)HFz;<qL(nRGx<59{Tx+%os9{G<4V_JZF;72%Pr zdH$LK1U`Zo5cp&~)p_scz8;cMuJSh>bPSDQn-l)@hz<=e%gX^t{ zs)_+L!e8dm3I_5`Q0jS+hwUbc&TyIOBDiJcR+f})>xt5d?$8T^J z_{UU`w4UBdhKRijkHy1q_@P=WzD5@!xVd-4&XQA3WjiI+-b@qw$Mh-##a8ryk)sJO z_N#Ldej4D@V$Zu$5qVrIIWeaSm~lQ{-X|a{ah*{7Y@(~nr0|eFmxMr~ZvAXq%Ql}1 z-yaPLQd9ti#H5)py?K`+pAtaNo_zZW>baMnZ%`%9V3E2F`^7Y`;;Bqsmh zR``TtZ*^BWknCS7Ze?~FdwF@4TPl#9gTBHhZnn&>R~cwsDT=Q|Ib6IsD>aZ^xB0B| z0dGi*UHQNOimEtN8ZrhZ+^GRMj^g0e|`(C1`H0%PDIlYI%00k zM0Bi~adfWf{jmB%>H@2CV{$_X3**+aaXEl&d3kgeGjB?;cp%t{tbLk?5Z%+2$4m9# z+S<0oUFfwDpY0(HBw<}DG7!gWx7?iGxR_|5t&X=%H8i_*M@t-TcW&4OB+;k|3>I$C z=&d%i_^nqFyt3dmAlKXd5y2h_O!#^n#+*d``&owjHpTj@Q7DgzV8@yvVu3&AlvzAw zr2o(=jXBt4gkLUn8{vBG$}?igK6V&~Ggv$$$BX1yPfvjduID8CO&FQyq2H75;6|h! zeKaqA9BgmpvU(~Jho{QqgTDn9wf9@u$4HCtqSG*-GhL!a zEQsZ$w)E1)q5OJc2+NkjN7UIA-=g||fC}$woVjfFD+?b+F&2tRQo#-)_cbl8Z)6yr z(rhnKvx~XUUP}-*CzqXnC)z5VtgGC-L1cG0nIhqkEQ%~JCG)kl+*vOlAHQK`5?hH| zyC5(KtxE&;Qw9cWdcxLi4g6>}14nzaaznDTz?ODXUj4U|OA4y)sC}9T)Hm8D%$GPA zugOA}#!W)tcZ?)E&PlrSrarjQR9sN4)K=sC074+rH75IWAJn+Nx5Q1*>Z_fSE|?@y zF!*YZM3ZS2y#fsHAUFDMoz3A&ytmrg3})$7b37kEKS9YYJY)W$55qTcRB=YM-G!dZ z;2J0R#-aeX^gi;LL6#aS+#~(?$tWJ+=FU|deJT8(3xkC^kzW^bAOsQuCZmq|VF<@O zj@}XY&%eT{C;Kc27}na!`+Q4i$$C2Ekn#Aj{vrsj93}qaw1vN&KpCK{kyN&c#o=7r ze;mrg)&FD|Rh0?S2cb<&Y-|Uh^T!fc5-uQFAJR|t0Cov)N*}x_;Y%3o+?v_nc~Op! zF5-^_o3zwf;eXVV;fr3i{9|Yh6Cpd~#G#|h$8LkfY?mA#@4()MUg_FS`#<_J&W^1hmdMk!WSE>BtP1Ntu{k?WH#-11Q{D9w{uB_|{# z93)*%$2T`OFNdmLZo3iw%@iU(Ps}|6V3Z6)0|Qds7rz@HIeZM!^{%nr&R_z3b6MfN zXmuj^Sy(i=&%zg$(&?Pmb>#OvAR&A|O^Gl^2)frVqoAi{)#~c1d+1+xj8V{YL`E)$ zujxPw2D@+9tqzRZlnRfaU}i$Xerg%B%%J!0-*X?LLP!mPy_HDcSqtMFiXAd>YELO(x;}pz!0oD{6Ze72UDXkwm=z#w+u; z?dAD6!edIOdRr1;!6-tN7mfHT24U7ZMgpEg@R^3SUR(h1Uu{fgyb(}0hJJwk;O?I@ zV?|tMzn)0|#nT~4=VPa`9v)SZQh7@Q-kc=`t$!-Myn7;2>+-KwS&uZwur-2Ix{kVi z0fP_LoTwgaLJyks=b)F7QtNik1bII>NPm69_6a)N#4WAI;_sIfFxVQdkUWxb=b#Io zGlzPifRdB)Qm+#f@dg(njOYy{3~0|nz}CLTS0F5tHsEL#$-7*5dv$3>Yi#oeMCN>W zW>g+NUAyHAHuKc50}@i7_t%iqAJ$NhJ2^#e1Qs^c1qtuvS$mYa>m8Ny-YvrZp~|Z5 zaDtF2Ns^35B$NzeT_YmiPPR@a-th&^p<`@?xUxU}JyF{F1Bdn^nr}qr@A)*$Z|m&= z2M)Bc*m>vPGJe>*5KNJr8JFjoy*s?(Imif%9LcL8>__A=d<5RUWU(oDP{)jn-!zNOJ6%+Z!FTY?; zSh8EaW?f$9s-!UlEPeD-%dm5O5*@ZL)@z-rj|h|E++PX}^OB1na{=@-AuTBp0?^M% zeD%m6GM+pls69+91oZhw@hnx=*LwWwPd`sw#)@9KbN|*f-_=>C_GF~_CGP2_?Dco7 zU;>;VSM}U?A8p}-ixv6SzHdhJSZlMfFBx-x6toI6_84K_?&;%#pI8G=tNAu4j%vX# zmnIrg)`gyq|EgvF4&T#fD)^x}k>!fsQJO@^<8WAFEu>I;+h^TOWkJy34RX~+Wu}^` zYqmti8cbJx?K17gOmAa$?tNrZ+wVR0XQIi?+T~>x{p^$D-ByiN4pNyEJGiIBP2KM6 zkQ$Z!zBh61n+5}EG#!mSUakCYrnteqs;mySL28)+Fhwsrwyq??fyK%S$ZA?xs|Imjk!GMuDEq3fY!t+>~k9 zvL>J0=c)!q$GGn8fpe3oO4pEe2LHbfS3Ym2hdMi)_R0ANvRGe4tqp9;)YOz_ zw+-=Udut81k5<&}g9D@sZy2@Gjm-%~*KW)(x74|K@L~r^GkW8o+VIkm>g@z-`mJ+o zYW9e18KoEDIR)R{h^&?4cGYL%_0JfG%!bgUfSw-Fl_`v(B^1ft%Unb(dr33oZ8EO~ zq$CdeTmZU}2*J~mY`itZ5n12ywhgA_WXg_|x~k!D>7O7h(vZD3IuMmEe`?fMkePIk zyiH>*yM+Bg_}#*8Z1t#`L&Tb#<5vVUg4|P8`7nUwWx8DbNq;K!&ocHs+v|$u&blIw z4{prq^L)Q3($Z&mN(Wjs4b6 zHnMsz7>;xuY1?nBqq=5Q9Eki8g$BkTXtia6N4ifSd=mZX-6RUC3!x3JC~|svI`k}i{ly(hT+@e4w@-T=2Am$W;&2`5g^G;Q%7J1SzMI3ebtDF)k9XJZiv4h&6#ZsdzFCkwRphmV!g0>yB&p7kLgrj#T34t&>-c^JZ7$zw_IspH^(aO!!`tok*|FtKas%u~LSa_cB?{1UIWIeyee{k_k)MqlP% zu@@)Cyi%fTp*lHN1FI*s1+6XTI>Y6&M`_Us5WTmD;>KOki$FcN#m=L(+ctN}nBoBn zh@iOhhA7t&BqZ!cQu}5SA5mG3zTIqv^_OPfItKu?0Tp8f|L5wonB!L@?s_ip?XfY3 zdQn)0%cI_1>f1wq2Db42Fd&fNj@4Y~TV3rfF6H(s0ZrKV*Ld%n#m+-w zGY_Y9FQ4x!cN1Lw+QlXX8DB|qy{eEIPh=N;s{{EI|9MdIKdzff1Iz8FaZBW(=(a?@ z)fM-2d}&(m{NEyZd{_!SqDyo#yA^@(JOWv16OkHG%Q8VzFe+nu+b~&g$A&@w-ed*k zQk^=5%>2>VekkXk`axF>-6O*!3+lbrSr3Q1xrF%-HhZ?@RCf_P67xGOpB^ONGsB-< zN6> zpXmJ{Qw+ip|9V)ZzjK~w&1_aGedqEE>cBt0xh~K9%V-$n5O(~CT6`{otveXmdJqMO zEE_1te3|Es<;J+vdw0e%e|V#b2Q{RrpeV-oegJY8uF}xm@rJmv zr8F1<*yx6$X#3NZ5Zyfsb-C0iKx8g}7G9$6141?Kb7uQbJ92#N=~>GTE|O!iwzeh= zH%4?;d(1Pq{LF+0zU|CpH%$plg=cQR3!b^Uu_d8vAoJHRX9$rke09_{;nP3Nj;?f^ zVIN@zx^VU=Ez%reSP@5tnl#1|wr~7SB8Ub(3LbG4#Lgnv z_FYH*;dC5676UOKM6jehH9@fZmK($wAqPX||Dugq=i8^~!T+s+!;_>6F4rk%doTyJ zl+Bwax4ixL4Fs{+D5sSz8Kcpt!Fk6JKJhWekHXOUNpGk5e0LYwukN_dSWIed3LrTB zLRLurFxw;Re-&+<^w8O;70z8>_`Tuk{V^87P5+!mS`@;MBFT#F_e;-&;1azalQSlp zeGeR^RC1HSj^Yu^S92Q;_SVvF14L|KJAFKAxXF=UvbS9oB^$0@J?G=e+>zaRNcT$D z<1bon+A3Du0*T_Wt0_I)iLLE9R%8e9QoX8CZ)q2yH@_l;rBZxNc5gTrvOfzzLAyOUQUSvfkUhDjzH4&rW zv5!9-Ms`|vW?&R8^GzThSYY8k_!T;WnNL_l+-d7x-tkdbhjF>pzu_nDe!r~^UBI_` zuOZk%RX@$f?PmyTrsV&E5Kw8kvkQi3d-)PNH?%wkE28q`_~{{o7U-5|~P;c=_*AHR+JPtYERf=v`bxlPn!(MXIl@qM(@ zLu7!_9t%eYe|R3s7utD4kZ@)cw-y?#4?4NCsGGyrxW-#DZ2zg|h%1tDO5}W2W1;%n z&qQ>3&lB2lgRHvSB!*(NpSe}@p-B0qOl}02Y9emv4P}Ca!{Ip(M^M_}UZJcXUEgGH zd7J;?fCSh=Lz*B8-G|lZR(b_t4PgR!P~<<-Mc~&izw|5>Wwnnwaud=6c+ZPUG!q3N z0O8UnueI%4HxN@+`@OiJMyai&qyr=$(IENIS)}JVa})s}1{eoP?y&{gqwG+~i!F5{f!LKC)=yLX%XI zluNUJ33x?RBJaWS9g;>6fB<3MMKqqv(8wq|FHa!rdw2KD&&kxm^_eQ-qbDpE2jyNq zJEVfG4+#m$E-8tIoQ-`YyygoS?Avsjf+y@^wPzgIedMd@%WBzXk;XH|s*Zzsb2#{KmfCoSUg2CVUpBm6- zUKp_;h;K<;NOY&(*ccpSa9Mh?*ppd)Re@E4U~x-1adF2HJ`sN!6cqb~&F&Vf?A7-@ z@yf&%kf8~gxp(@o(}a{QOA7eNDIiU=xJtJck2)SjCG6=m0T zS7W(Qv!fo`akIATObwJg#>C(jx!>ZDw(F-`fhrfY1h3Hlb_cS@gS z{-m^+^;47Ko9kaiiCaJge;5O0dU2fb5W*zr3W2!s6zlH0ExF!7b@9e@lIq$}=vy*| zn8Kae0c%0C;bE4WS+oH!`X}V?i7=DOC zmH=xL^#nRHgSxwn@6V4ckwB74Q-t>CeQNP-2)4-lnBX%~1*PHZl#H5UM`H%5(EtQ_ zHA|!Iqc?>=tbR@h*Yuc6<8*tduCE}fGhFA1v3qiNg$Ci0R{m8d1y^7n`~U3Z4jkcc z-!lyK9r!(XDt5x9JVPZeE-o>rp>vs{F62MDvURF9>|w>g4f-s#Giu44fmLkL<@pk9 zeq#e6Caq__DJd!WlW57OMI8Wi&EB0w`;C=dLUk8r0u7_?o`f)JADeGwO?kDd zk1HS)$3{uCJo85`3FkQc3(mJ9M(be`{bTevkCGirJY;FXL1_)FlAMBY-$7J10fswV z+0CAlp5Gs;{Dggdoaq*?fBiN%MiID1E1-j9e6`tJU*WYjMI=3mS)>=&x1M9rnCR@9 z&dn#vam!l7Dw4?pO@8k8ZL=%f zNIV3A`1>H}R`Cs6D*AbGL1X(n>g?Dff?9aiTIILARU#nmMY8NgBe?dY6r3L0pVr8% zy^S4Vv4q8}_uzr$p?Y5rZ<+$|+@-bQUh3^P?V{$8lSIk2p3DSOx1I z`nUvgaUHg!{&NyYK-}pb@bz~wtX7}*KhU5V&Q>D%872xJk})2hK$gI z(%g*S|1-VpTnn!*Nh#JdViY5^WR zgeBJWvoS14*x%{Z_R7*NyFWEF8Pc31q;M72t^^8$AKnk0tn_sk13!MFiM*W+X)$Aq zvOr+<#|nHDIUW&%xo{@3C}IkrL+kQd-nO4U&dRET6B(-(tWYBuP!Vti<7ld`(Q!ZL z?s3?!!iLI`8L9G*T!VE@LJ*MIPARO`x}Du`WBUHAL%N%n{n7q7KVSKWDi(_n)-lmu zlB)fE9`h2U(IhMq3Ugrzra_{b5W(!qp)Nq(@7y9lBz9^^wj zCQ1FYNMqek0>XKNMRf~(q^|Hv6E_#QBp2LDuQZl9U7Cgvq<-<5DvX**Ld$op?!-85 z0~X_;ze>C_Np(>?yoXC)`ug1QQTnYk6ZXy2-h!)^t=Xx1Jg3WF>ke0^R6<*eidfDR zhj{3qE-l(prGd+>dm0A297moiZ1>8v2Vy7b-R#HT7*QiG`J1vYTaRt~GK8^C%EJ&# z=U7xwO&?S&NVC71J$RHQfKT>l+M+@RY1S1HY~QAq?=QyDAccXh*0M@FZLh*E#yii# z>F%sMkYQ<9SLOH$*mz_`GjnGw>7%8KW5znu9QtM`(Qms`FHK@1+puj?e$aqJB~A3a z`{i=0H*%XQ0VdKHu6sY5Oe6R5oD7w3c}dmDdAT|&^z{IU;2X~Az^*yFbP#kJ7ESp> zcs-4BHO-p?FFhVzcu9iy5BL^Te6U*PJ2T-+Z?Deh{RQwvm&*Vc(civ$PMKo&3qSHB zmQi1X@)u7PO3@rm3>&o+kR{C^jW+cB{%hPu7JPy@*-n9P6)APMdNUXA&2@Z*9m!%n zU*4v>4RO)O{c>y%_E=i0m$Pdqh2Q0>zE+HvEyZ9Lm#JdU`oDo-wOT%6w@1x{# zotoA~VC!{pozNdi<+U@yc1H$~S-3*MvnxiPj2JfgDE9SwDeF}m!I=jn3QD5@EZ_{& zxOot$7i!EA6{(fj$wVs8OZT_327;KYN30F89~xg;dclqqeEU-zK?Ja~oe@ItZUpsp zxrGN9{h5>2Afm-4EE#qOf|G>lUdBCoL^X2*v-!KA&rEVmKM#e z7^)AxPkVs8^sFw_XQ?l&_rnGGQ6YqmiI4w?#N9lnG**34L0}MwPi+We7zmZl_a`9? zX&>Hz4Fw&;Aq0VVrf>(d+uR*kN5P#$LY2Ji0L5r3e9U$;7r~!AAXA=)cf}peIxsi^ z=|SrMvL6gIC^enqbA$%zOO;zev27#EqMXv`^}lag5o7|50~d4-4OTR0ttTVH{SFP< z|0r{JJtrBKUS?K-MVv=DOQsSY!Xf7^H!y1FlOUkOe?tD5MqavX|x#$wMAO zn?4z+r>@qnj|h$hpU4kPzl9@#sloJt*&X&p{E05FkP;HeeEsK#CwD!xpLxOVT!9)G zpBlb+2s!8}uUQaSZPu@0c!c@68*VfYfysS5JM(8@J7#Yn@8I;+wnI#T16JJfi-v7v8^TNM`+g8n(0W^>_;QUEOCqur(ju-@m;0O4fuK2NG4;*;k~* z36re^-?;0)Ww;m9w=hJcYujP35Q3**H&ifGlYASha@^v-_vNN5_8s*I1rw8vYvddQ^lL+?xRn zGZHUQ`XScH{t0aK7Yj1Y*`N8s5`-f>4^pUR(`wOd;~o>gq-5V!8&6`pO45?t=La6n zUNrL-zHfz;ljNz~lL{&^OfB^{H?(BtcF95@KCyRjGj?;iQC{jkn&gzqvrMkZU9J^oteJ6%L1Er0M1{OU#${(swq2J@ql?>6 zmgJf!$(U#}n@fmX!cZ=g40>ILG3b4U&+fasf4%R2?;p?kJ?HtIbAIQX-#O>`UM1k{ zWo5pW0RTW2<8aIc03<=^-DA5nL{p=C-JwMy+{NA&D1W6i1u;?qHcmDG@E{GoMuI^+ z80z2|4gfo!iysM2$i34504HFM*|z8463WRT@ABL*Q=<8|V7+;pJb7yt4Eh!P~ z`!To?vxtw;qoj)^xHqz~J9)7o!>@+=AtwM60s^AXXml~7!;pe#Xg(6632>AIw4Brs zM>VQXMBwoFFqkC3ZyGeNv`WfDmYxI>PDP2N1-#uPOw`7j>7~GGJt$1i&d1L31cZCg z|0kzaha75%jR_xXPSLcataK_rZM9F^f4<_)I=`P4vn*&BK_tsd0||i^@YK}Q^3w^F z`SGjfmu_-%*#R@2gGb!!vt|8*vx__;l6~&OiE(x{xf9lsT#~ zAPm(gL;beLoSi1lDO3L8Ga0Jj!rYpr3xXo=fiNItn#>I~xIoFLc(qCnRs_cp7z`=q z@eHY~U(qwp*Gqz37G4tT&nhsYK>%V&`5{XyDxw}?fhs|MU13ei-b)p3jNC#!eL zy0E<4)Z2mkkKpz|l64zr_A|Km03Yw@Nw|ybk7JGme24jMd9}xYd8H+>db#V?+K`f+ zXXkpK?4^{V6h&7Ae@O=oPB+27Ip^BX?5(nnDG@}>4PBeE%*o_(1|KibD>d;28B)W~ z&6!wCt#sLol=XLSql#gE9K&=o|B50;;-NVw3~`$jL8NCtQGEj@+)zF{*1bNM>%jL$ z@Yk-nBfMS#hg+yn`gPkPO{;GS(4f(j*#+{I0%YkIlJ{b7-M#45N=1uGJfyFrrlCQy z)jeGM{jE&fq~;)t^;Nsck4y@b_qiepe0a+Xf6{BC=I=^)@@RxdDr0$aif$yL-&qOf zOrS2&Dn~kGnS|UiIArwFC%^Klqk70WOeI+;`dIU7VoU>!Jqpz93U|Ymc;;F34hEDd z5G#44oH#?`uE35_$4X+CCD0(AaKPVO| zV4KWT6W%779xR&Bs#L|j*~m?6}PF|=wGd;dIbnlnY^b| zl^1eX3+nWqKvF4<*|7Auoo%`DY5tAD_B;V8RY${ z5NwmhYp>Y2INjs4NRap^g;H;7YWjpyGjJqEz;B7n_BZ?1{`>6IHx?YakGjf{sL*JC zB}SqU{Wlk;CQT#u*m_eb0=?`~G2tmG^voDX!Ty zrD}97hZ3Z{18Zv$d{Zjqhd`(E7kowBx$<^=?1IOvX!f;HR~lQu@yAk?ABG8CY3L6P zb(ehkmo*i`A^Dx&4<{lvCb~o1UP=lNj9OAu91DocV&wLVSR zBppyDP9!2AZdCLN1AK*zlbS^pwW8nL&|n6n5->xr3?{X;kBo>qCWo!q@iTFg-s~`A zj#|yxI39m$vf^`8gKVCAE^<6s@$j(?q~BhFW#LcOaTdPDJ02!R_-MkBsC+s@YVo8i z#zc8fBB8owPt)jH@$h(mWu@_yU!$jO~ps)4Ik;#JV6p-j_u$ z&8|P4tyM#V>-yEvvu_PjdL5~i_@!u7&Dt688R2$kv~pj++;A&*uqE*;$)_HdlYhVd zEhi$XLp|;laZVr#GV$BN71+e1KG{V0^f2{J0o%1GMhEbab;S>_9+i$GZHTvz9Tc`i664; zIrbi}ToJ1i3l*%x(cS;)znUuRM=preG|Rf-=iTJA5ehkm|7tHgbRz1y3!;`1T`_9me0F^1l<^ zZ!|Yn46>nW=IMZ|W@-l|4t}Yw8$16ZcwY!!Wt@-SrvaY1!AQ)~9i}|k z%~wE49NC-?EyWqIi?j5+%04b@I&#;!WL7Wpmt6f15qmZ@aKc}X!&usq#eGLG35RxD z&pcPkaMgs551|_4JiE*Tyuiu>`Bpsq&cy;!ZxP5y)Yo45YLY8-Tc_X2-Cw}b0QID| zCUel4?@tC{IwPi_L1$Vc->ihPdD|z=ed3nl3_7Gu^tt>k2B8O-%k7i(!8pW+yc>lo z<6e=J&n?Zx8K(VP1@i#k6Jq0|He0h7DxdJ1iLvov>GV+oRP&yQ(_gRpZx|lCjH9XQ z!WdGYDuE^eZG9_P)f1A1YkM46g-DYgF9k?3w*Xm9+iTZfSZO7`D*|Gi@%c6aMN063 z|3D|;v66sNCX`ukH0aV;A$jfNdbb0%38;~mM&;*1$ic)wtmTG~*G5TLpg|xs5DK;c z=|-m~{ITtVIEcYm|6yvYL)9Vlw$thN+V8v$;k%?lcX@Fc$7q2>{2cGdn?Mo({0JSs zsWGaG{`7pfxufs@Z$GHx%q3wVA zS^V$Zc1KBpHtL|Jr41U-+72A2B?0+{~b=Xg`gM!?1j<_LECdi ZpSStGYr~$&^v@7~#vI2TE4THd{u?zmTL=IE literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/figures/stageabilitylifecyclecallback.png b/en/application-dev/ability/figures/stageabilitylifecyclecallback.png new file mode 100644 index 0000000000000000000000000000000000000000..9e17ed71f1dc9d118a490109c1e5181d738e63db GIT binary patch literal 24197 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 z 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 IIVCg!0PYognE(I) literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/figures/stageconcept.png b/en/application-dev/ability/figures/stageconcept.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7c1776ddd207c14b60e9eef22ba22a1c77ad2a GIT binary patch literal 77887 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

klI0$+gux}+MHjr!qBoklRc00L4EG*N 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

Z`tdJ$;bVJZG^%#a76_V!Ga&y2?Ft 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 ZP@w3OuV|;X(zRpLV5n!Ri`H>^@gEEXw=w_# literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/figures/stageprocessmodel.png b/en/application-dev/ability/figures/stageprocessmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..18745767786674c496d6a41afe2e8df937745a4d GIT binary patch literal 27080 zcmeFYcT|(j*C+~z3N}ClMMXfG^b)EkJ@{8Lnv zg{Ubz{xjYk?T!5xkg}{i0C2$`gY^mw!-J-UE%>J(4<18wK?`)KDE-q6S5cAxPjrHU z{JrhHJxnnKQAGn~h^j0^1w6iBYGi9}CaMSnZGViPH~2F2_Vf#6O!30Ghsk0B!Egl? zS!G!T@CfFE3k(2*4AfO*d*L*IW68tRS1V*r-^;_N?bGbR%vg1rBE>g64Z@dO(I zn9>Kh_QJTMaqaZ^#Il6McrB2nf64$8W|;V?gfA|cq$pWq%G;2xo> zWD=qX&hO}GWPmmbP*Lz!RJOrK=mq)dm<0K$AwBFu{PC(bD)y=-dZv*$Wp76--w-PU zBb24Co?oOMBrF0Spkxqa8~{hEVZ0SQjI7Kej1UplY8Vq-co4$J2dk{(85C%08Dc7` zsB5AlZ-~Yj2E%m20oHXf;ift!fJ`Hho~n)^7HB-u!$V0S9AgmZ6BJ++Y_F~z4XlObrl2Q_Q7g69EM;D50baH zu*F*X`5O2T0#$W9L*z}|tuUA{Y?z^1Fx(2IW9y}27@%UREDyu_T7~Ms!mWJ`{0tn? zs)|PDx*=h~R(3vNFnq8aEzUaIWk1a4tx}m z;I0geFrikK7&XShmB4q1CB`!pW*DGmVnNUkGca?vGzv#q!;R&!c$fpuKMY}L<7sAq zGd7l24>h$6kXIp?;w(&*kt)Gqkrn`)Jj@t}3^MbEA&`Cw5Tw49zJe-BRoBiP5lV0j z_VBd{R5n$NFtf&3>jpa@Ofl+UPOulk9)dHll@C)3wy{I|=))Z>Rl);Q;3jYze7G$n zP{-fX0D%wJ(>H)%+%44PjZ87-21;P2g||&O_|jEGdms%Q@o4h^Pdk{YqL~uG!BW}C z#7j}nPf=0P#@*i5(hTKg?C0(;@2wvc=olDkjni}YQG|Qi1_Wb$P`XAc)_4mWTYDoz z9{|q?sp{|UXl46+2h>5qOIn2z_+z@H654LQs7wKUZW~X9;v4I=Hah~o-J!KUSGptGg&O{xdY-gb4 zr=X7wQZx!u4P_7`!qzC*JkZN346ScxkJ8gqaSyds_0kJaFu{Zw>-*@qTY200IpFn> zAr|U>N*I(S($PB<+&;>X0FMm!^Ye_54`-mt)7UHwPcSz1bX0){8d(PTo60-r!PH?Y z$Vh~(kB+&eIao~B-U5dX^@FLYsp%^Ot0OE-mDSOP7(5>Ic>pN7zV-w!{a^=gU9UhR zn0t^TV10%(w?rB%;w-EXy0}m;B~z79td9}g5eOutx?{MKUj)Jk;T7y2ittA2y8DE9 z+bPQX>UrCG_#$-zBRrIBLNSJZst6+#+*nN^$VyEY1~&mP?ILwl!&H@hY(j%A!-F6` z))C6yR#p~)A#eusW5c}dO#o%-+PlNUP1JBOn1!C1A`mJDcB(qQ_V#!cbDbaq^GNpq zBSR|#KSd8iUvoYEFow7Zk8lsy^9jaVf>m@KR1jbeHVAEK#vla;C0j*nn2$G%!6N2? zFmrE|zq-07&P?7e#6!&p=wMx-By|0h+~EYOOd=+D5956Vwf-ao_$1v802 zqWnG8f`d?ws^;c@1+7YiDiW_|1ou#edxEhroVueY*4<837frAwAeBrbLsh~(4ORVN z>V5=uA4@y6Ac8R}K+TSTw2Jfq6Y&0q3OF0^R98vI7mo0=4^~w}D`QbQ3N~uWIImE! zTODhLQeyl8b!6}#h4xpwf#3fc6A=9yZ8@V%OoB|tdOEh@u8TPwkL>Ko^;$KyoJX(v z@$FiXc|Gh6JG4aKnlFkyGImjVemLCx$PGU0DbkgFZxgiH)Z(wJ%{*g=>*}bQ@0TjO zES(}>;q9@(68XcC_4d<*%#LL`ZyA2Wzb9jOYazO4ICf%1L-QVb&~@HvdGpxTv{MxS z#f8b%*w$aym{pN4igLKFLNgP>b-=+VDxQnZK!aI_KkzgZ24JCw2Y-S^g5@}dFCm| zozl*1FyI}hHk7;ip&2U+r0j#`_uP-~vMp!h>0Eg)Z}NbdJ{zp(By&KW)^vnyOdk?6xlc&gY&s zwI@nc&Nn-+_FP)-Y~ov)$`iQcTG2}1>=vc$ZAL__ZY6d+%#^_OTN|P#>J|^WM34!y zq1j`Q*cWD`OD?s$!G481uni4|U-ix1_f+1C0(_;b=KaN&KET&aDV2M6yn8e%KcD;P z=H#f?n`i7c${T}CtTm@-7*V*;q*_QeLA~Pcw;WSw&fO;~)ig|H-{eW*r7t4-@htjK zc+D3x9v05q0sy%&euJ*>YR~_fUD>KFu`RhhJHJg^ak4vZH-=Cye;D79N{ibgTHoS0 z?LM;B_>43bL(xFChBliO*S~L44g9TYPLjM)JDyY;cdA3Vm84*4p_P|N+<0Q>wX&?5 zwH_NeZCS|Tw}tO~f|or_YFl5}L_66@l@mjkh&38Plk0`v)~#FJSpvrYa9V6sl9t4?PyF5&CuXf;3MZ@ z-@{Jg)zmdj#i%)dzDvcr7W5A(`lEBD+uvzr%ccGorEW`>;tMIsnChYqc1??R|5P`~ z`uq$!x;Vix*^YT9y{qMN43*d8u)Sx4-_m*bZ({UDZo-jyl|~*HsTRc3#c7$AP*0TUBtk4OGc;vPo!XOdxuNdO=m^UYwB~!U$Fo$YGbx=fcCp6e z&4q_bpZaX&sNtWEISnOM(~4OZh%buWfCAOyx~n7VH=n&UQ=&3R(N*Beq74WZ+4c{OfS-qw{@)-ANz zha<{b&H=T5hH;jtU13s(vps4*Gn>c_z>P^a31-4WX}H<|bh&is;)L?NL?}9{jySUD zC$34I#cR=K$J&O%SEoZ`XAdv)sfP?neA7BW$WWWykEFa}T z^E0Cf`}kMdZvz3h1Nm_Xj2;2<%cqj#Gmsk+40syMkD#o_83OL>Q$!UkVBxU0h+%ZAjcW{ViM?!$@Y36%5SRy zB!54w7Y=sR0JOxcYb=W6stAyrDfK1YfI5wifB_1o9eUuX*TFO!X2v;gfT3KjXLYYL zvC__8Aqcb6g8PsB0NkY{@mSU@uoG&KejSeegi zNRpZu(?srR$L(xwEL)D`KjL8QkHMT1?1Z16bUraJH~H`-0Bj}**u%hv0SpgIK!iKT z+kC-^%F^y$7W!wxH-N;qXp=-T*qhhEf4~S%18hAM*G?`_AdxQ&O-n( zClUzXlL4)8o%r}K3}e8|VjT*+%%z0f~#&Q64PXU$Oy_I=YkCiTR^xvTp;+%y< z6=mg)G#RJ-k`l>a+Z2sD4_RIs(rhFFurOow+k#i+r>kpg2fO9(&@!gTJP?^=ibpR> z`ro~=vOCbnUizgUIiq4WScdd`>f9RBOjw?9DJd;2XlZe62$>g?yxbhQ_TcKigXek? zl@fAt6z8ZBOp*7I`VYo9IXZf6|M^`=`J89ibtbUM-DC2(`}H!XI*YlvIj_l< zXd5IFGg0^AXZ>ccnr&uva1f>3tu=4Pu*T&h6v>V9`pR1p&<&?UW>%rpu

bQI^YbmTGAv9{d){gA-{PNX1`0wxT7_b^9oD!1s?NKR3ls}-aP|xrU z41Ib6^X| z?-s4>=hUdYSY|OIF*=8qR-r0q}Mj*=ttTT zOaJAD7vf*XLWeq@Is5YT)60sm=2}||)rE5yQfl|$;GxX%(B;p0aS``>k@;bq9lg6y|1TjVv9Y+e_;%#t!mwn+2wD#sYNr^X59A47&P&1L|KiD*twxko zd+3??t8urhwhu0A9*ZYNvf5ok0aN(#Kc+B{kS456w$Qv2axdNii4-0<130V5(@qmB%l>Pkk zuw~a3IkxDZFoENmniWp{E{&neaknR8_o7!OKb*yzT|;%-KGg$4rPr79@IRvGu@P&b zMUG_HSa4j^#za&GSEAZ?HZpxC%X?{ztRH{Py_X@>f0RJbe|Kl3$y^?@`&MiFdehcY zBOkBfxrqGjwaVCnxs1()3(`ze)z68u{Qrs`BumenxE-Zk7XF?0kJ*PIzKm;57-cc9CYa6rYB5SaVfD1emVf$ywxk(yeyKjqqPAL-6Eb(cja2X zu#r+Vc8~>@)7bHbkQr*SuwkZ3&qfZ8`p{A;p=U8rD#fB>VYDvLzyaSueRqf3Jc~=% z;L&g8^#arMOtsaphUSTCG{x);kGCZ0w{g@I1nQ@s53E^Lmi8i5iy9L?=F~R1nBR9% zPLAH##gUg8hw|X3LJm7kR}>Z+pt>I=1L@P^=H?bCnXy?#8*Yt_6@EF=hR~F8Est?j zsImLxZ!=d$bd(qc6dzssZGxJDxX$a>0NuO=?r@#&^LcMpobeNr z$1QIjTJqQzJ@(y`Y;+7*6D9@l3s&`(IxTjk$)o^59@mLZz@4TieD>gy1jGrPLT<_~h5 z%O1X8w>)2+A9*izsByW)iC5P7QH1M24>LW%UPYMn+fnW*@YF{D57ts{^Gck*TzX@j zZhR?(ihsE2k4~3$>AosNy(*k)y|FcX>@1Sr-;!fDxPI*HFxq&HDS1WE#_8bwh1a6| zUD)R3(K^cQl@4)I_tm^pQz|sR>-y*QfKhc47*!`_PZ#A}DMyTOQ_~D9Hr{?sEkAz7 zpmmjt1MsNQ;4IxuOYS8+Fy-ck%tQF@Z!hltOUq4CE2!=i9eY<Lxqgq z^~ivRHTduRK>YP|&HJzqE>XuYBP7}#xYv6BuwtleVnO-Rh&By_bqIc^a@iM#^!M{xgp&&)}Y-TT$xbO=4QiJzE^_q-!9{>`w6n-|&j0mSlw_$zpb7 zW%C?`M&7umI{n5})?c}zZKd~a)^wK}{|O|$<~tJj(Fxg;Q6HLV=~~Nd=Gvwte!V0P zu!exIGl+_43yQF8YL>?CZB2T=xxqej$zl9>Jn(Wd_r}uTal(tO+_{RmD zbGq5|$|_{DJxn0-o$ZFdXjOS9^_9*(ueCfsulH}I61wk~os~EfLlzSD3T>Kii+*cs z@^a6+ou__`Wk2bd`06_niDpe1Nuk%BH`!dV-M6tPtcF( zs%HDyeOfIT9d#sMYTYIZ2iDTaJF&HAUPm(gYX?kJ<>=Cfkj37TL%tuj7*4oI+1~qU z+ElDYMzYq{mR2)OTpa{e-q&ue(xc52EME7i5k|L0Ubs=-1xh8x{-K=o1}-w6dOvyA zv|xZ^(ctuiwKJ4VACFpSdHmFVAd#PUM#x zO4x~@_c>{@xQ{xot(D^1&a@52s_~_@xB>xRt`4~c{0;-{ z*2AG2OXFfC!uQplrrwyKuiU}CC;vFl8yxxOh11gYIG5z&e$B>Rq_7VHTD~g5ld8b; z#xiHkGIts-bp_#T_mp7j@}XL{5Le*o__?OlZRPF2jOGS}WP$8^G?r?xAas=8!~nPs|$KHX2hfgs=~3n$&1ifPbz@6#s(ul(82_OO0T^E%Ywd z9|ZVGihn zWJ~J$OE_&6JvxEC2jtq$=wkRz;CRK*sq8m%X_k%V*!1^@3gR)cFFuN0pC77FjVsKS z^LC0dG%sBw>@@Ru-uu||p~G#|i`z~0WF1qw{7V~6B^uw4=^>d0;K6+eKXBt1Gus8` z9dXMw`K*>_L<1@D>`{t}qST|MMJ)PePvA6s|8fQSu35-Szm1B*%vp_3`9(h#mp7W5 z<*Jn{QYo~%T}}ZqjZ!4?)QWiGUcKG)XTNDk`sD@=gt~zJ^M&jeJG*tQkWs3merQV- z|5O!EmuV}mxM}-)SGgp`aeqK5Z8(?HQ0hl7*HN&s5Cf=ZQ}~Tzz;|8EpcKQ4GGT@q zD}3cO&neO))H4Bu(8e!Vj`^*~2RknpE2lxwVrNb)bp%8+f>BN*67K662IV#*`(TJ` zj-)b=%ghpycw)BkMhAuf@EBn;Io6 zQpF4Q4oKb}dgJsMUAn|2Z~lXuoSmw@cdm6vTUTw=EHtnkJ^SV0IX?Q4grsAFRydaI zP&xYXsUxp;njQ!E)O|1N&h)n^zhv3yq~O0C1uZwb*!s55MV(;JH2&Rd8eW>;1D_vQ zL3iGj+kTzR5@yeu?ks8v#;|kHwZtaU``L%r*Y1w#*^sRe6)n@4f zZ+6kA)FQl7Q~3wJvF~%+wai322)}p-0u6kXYrZ@(0MGA*32fmauk2+aSb2V+YTp#Y+2-B$*sr}M zzc1ghk~yNA;#Un^V9)H60PM-cPeNb+%Wb~;g<%+0+r}M;C$@$EX5(i$2OREmI-idK z_xC7};VPy#K}Rv@hyX7Biou7QK=JE=F}aFz4Qt0%xH zIECK-U)#C@oCJLc;2ssw@kN?vbVYZ#eb+CmtTRlC> z`W=M06E-%vG+6~-)kZzV0aLvnr^v_V1>E}wr@;EXY*qj_@#jejt{S>=R}6vCV`!xW z;vpU|F!Q4g|LF_=$Mr!+!FdAP6j-DC4F5@85TFKN4G8W{H}t3b4vUUx3o^DAUMcVy zggoLvRKhcx=l_T||Hcph6FH~o#NT&>wuDa$xWCl79Nf2D;PIvC@(CDAw5-dyx6jzg zCs=Kv5sYw%(P?I3Qgo-dcz|p7L6&5ZUvX=7hiQBr1wzlxb6=2>N&)6xX9hYKIhD+J zjHN(0XqQgy8V{S4q2`3S&R)Cys=Xb}%6pZw7o6LS;t1)h1vlembQ(AYgF{1IWNL0! z+bnt}fmj$x&mg`4o$tkZ!mUMv29fBFy4IZlYxe2=S8F&w#Z$k(zng4XJKpzz)(t{d zNt6p^EDCy80hQgf6TIaC?w*6Qh=yF~_H42RKj6*VW)nKVPvB>GQhLz7M;qPbcVOCa zIi|OUx4^WF0>Py70DH-l^Mz+%I$xQ9A#8T#6*CK(6kV(F=j-*S$2$+RU_g@NJPFeg zGQ%eXsNe?gbt@BwnIaK$K#q%fikp5!bIs9lBK0@?q)8(8{qz!vq5X5QD*|rGbL68o zt(W7QR%t58&GsKQs$tg%3*q^dF=2}_FiG*Al)2)(0_q(B$nSggbBePYd=`&3S@>)` zrywFp1nwxX*g|>|`;?A$s|Tjzfhev=ojMg9f|LFB%KEn7@OG)W!SOZaD1)1X`OV~} zsIX3SQcN~&c#B(nnxEt3Er4%^H~x+UPP(V;bzm2u))u;hHos)w-_z(OyE{g%TBlNs zE8&st&xO)6rOFXjhkwX36Ripy#^5MBlj-JiP10RUmC8de z?dbi%sP2}b)#lw|1NeK}j1ahU%Epx-K&`pl}!#(*ORgLE+ojrf@iH+`Q(&W9U zjLxF_3agpLDCaXN@fB@Ov6EM0S!l`2THX~dyPuqOT(1`$q48x4X^LFe1`(oy7cV|* zZ1LS3n)#Sj(9keKWDc*xjz8r*t{{@6-9J@r8(}#O$)7^dvs|mc*lL6=jR@c4*t0^J zp9!e#u$$?W0s*kOA`WYCkH3X;3bUme~bT3y2G*(9Xm-`PljQh_!>9_=q zn%hKe?ey+ltA>2{-I|>!HysSv=z~U7B@b}9Z9OF$c#iCj9IJlW8r)|p=E~#5^W*tB zQ8xCFvPK=KXETvi;QZBR9cVnhx_@xc1P@qNG8XXnRaokFph)}-2 zZZ1%})sHID=H#+`pX^#pTY$%R$@$i>&!LXWn$(3pj%12DM9O=lY%`QJOu)XRKCq0Q z>@2_6aj4YfIb@=c#}aizRm8b?@c`Xyu@@42l39whwY~@$Fo@2H*_^epv-1`SYD?go zY4+|)>v-<|Hou@izb#Qf4)}kHk*hutKkliT72v2nIeeIf{^Ar2#N!>?>`*0%tK-|- zxU3joUthDy84A*HZ*%v{3(t?I{07S~1NZf>Yky%aBesChLvasq+pujnQT`nEKO*2=f*T14RGn*C7I@ss`*X)s9P2L`eujIp?LDcGGjh=<6r5ScrJ=uOC_S}zX}l3#JG2%(+FC78JMKwxP0qOjhxTP}w4>Q1N)$1rx7Nu< z8<4CXlc(i3RAeiBU%Fr|yXM!)q|Tz~i9Qp|sZ`4;$c=aHz57!sZ-NSj{&4+SEz*+N zn2c@pneHQxFP52%AT@uz+DBWcrkL#Q?wH@~l_(%j;en5wQBt&MSenf(ZqaRPl{4_k zCP1q#aQe0y8*>q{P<=U>B8VjXax6bm5j8_cxZRvOp&NiAJ?W1x*vhcnX-4R~?evjG zqi681pBA8Ox4Mf=0zZ}yb#)IP&4_>22HC49m`So~p#Z5PByxa;Jav0DlMTeeCpQP{ zxzb>PDZpk?KwPRO!%bXgCo;&9S8d z0+ct;88C?gmxbZ@eS|(F*Iw7Mvu~v~_nbiV;$`8i&8oPFv7#Y-PH5fGPxjF0;l3rw z?6;Mderdqpy7YBF5gP9Sw;Z!JwoJ?kHH7XHGq~SXOys>K)!de-ElckY2pg9j+8atg z^c4HrPZTm*+gQt|ip`dGtZAn`*xn^1H6tDRVHo6c{0}CtN}+9?E9<|9asB*;1%B^@-pMhZUH@6 zWpx7?#1hHfvfQ$z$8nAxtxlr%!%Uh4IZuK>^O~GnjGJ+1)KuT{T;Dm6r4S@Be+|Yw zeV29q%YSMC*qjNU^%Zeb?XY9}BQm@mVBfgTm}X6J3NCY$iPAE%vr%FSf>(%bmy_9E zTxMM*e@wB24zIc)5UAWmjg@Z5VU=_IFu_Bt?OQN=5Dm~p9f$dXb&8R`Vsq!8`wmF1 zn9ZyWxdrAHZ;w%-;!^e%4<~n)!f=3bJ6{gDO4W^ro*5HNy12EDv2bW@KOZCXnbS7sE4#Q1&k8L!Z{)sK2>*2%z8@%Ik>i4Z zwnb)?@$o?MK@9HdKie<#>vv+Tvuo7iOS4Hw=7CsQ_?}CcE2ohpGp%Kuld1pT(7Y>kGJ!ItJ)ImNgI2Hq)xO1B>4s05ZD#t4cPHLJ>RsU@F)V#cyXz=0UuF^rbwSrqpmRj>;9cY_3$JwGs$H$yagWzamp|5e; z#k3Rj)oPQPfvhzi>ivCs-E3tE9h=9n8rL^D$C+8i z%6??9x1-lXgh@X#DDH;$h_}oi?*3~W7F@K#4*qtI0melFdWKircdA+~n@{u_FkaYX z4+-(>0x)PBK~g(f15&4E4RREqDB{0T#&k2IV~jps8?s;@Som71#Sf6YOn58FC7enL zpJAfiA+|yAce$1SCgYCl0J{0cTRd1-p<=owTCp$X(> zZXTAtr728Oa8}~d0Txp@3LE^?0DAXrhV^-1UP+HVW$3<2*X9JP$Os`4Swe{9s(2wX zAPGp>NF-m*?Ig<2vi->?K;jd5>Z{`{BYiYW+}T{~tqXMH(~4Td)AZU$ul4s)SRyJ4Q5dGy#+ph*$X4+(t2i5j%qw)Xa>%M;CqPhL)l z1U_Jm!+on{u+`iQr|f6Rl;DMQk4A$+pE00o`qjbJ3yCq&gHE_gR7JFih180I0adfGTQ#fGZ|XCN$(U-rNBO) zCoL8_iJW0vlL$BDyp9lw3(5B80+e~GI;guD+Xx)ohW(Y5z_vC4`j4>i3eEjer(IxjqZBu$l;wHYS2Ax2GwW zyi7ixP@j7yybu0qcd4Zr+D8Ggtj=L-4uAdRg)mU?VhR24(L_cy3!eiX`vXtuTHNUN zTg%;D+RUn?oF4mcQOFphm|dUg#3@w@R$~g{J}IE)^SCUA5ORUUmqWQ>&Hc9|MJ>)* zQ{-Vx-fDynbTo;Q85m>Q5UPooJ89NoRA_>!-FWL@D@BrQL^!M@f06evh6x08P$%lv zJEA#uwZ+E1E=Ec2{8Iek+Au~Dtua@)>d{p+@#h>i{0nDmNJjrN7&YVU>oLn)P#$#(-Q)6-qYq&)-A zdD6;cUesKz9WYo4?O9b<3|Oz}M!%`u1F^5aWksK;?_9GNSGd;Q4#3!zE{nIL&(O%L z$seY_cwX#Em)mkSIN(PemlM!zDb;Ak!VFBZ5E>E;^<3sS%tv}S&G9icS3E`0AiadSJ!F!}Uw&ZtGypIaKzxE=EVd$%)NwPo0KB^9d{rvRW)|Fv3!zwc* zvs}ZG2Z+1X>n%rNukvBSaD*u#$yxP^Jk%54d_Xw^Ugqz4L{`Pk$V z8Cz1vC;}mKY3R9rtH zPgX>~FXd!^h@kgVYxZ_GTDxwrb9;@{VB(B?p3so^xpyfRO5{9pLkXr}RimJ2VRK%# zdP(wG*hd!;RSSN!x>>^l&g@Txn5^jPJ?G@Wnd)h@oCxel(x^ zCsEufy5;a1{pYXm+_3cx3DQ}|y@HXRBLOVu4L;dIx6*RNVuxRh`Zt%JwWvh;*Y?gY zJ7K3*3exNN)N7o6ZC1C4-9Pi$1Zu}AKCY&F>nORuW^#Are!`KF`s$9N70pzKMfC4C z5(dtT%Lc^7yK$?HmDBvi*=m+0MfcMtNNTg3S6!51Z48p4vV)oucG~QnUfMqy9C{T? z7M$O@m{{MM9nlcBJgSKPcHPE)Qe;bi>et(2DdcL&={5zo!_k@T=$}U12Lj>dP3rboXX>(1%j00m~Bjh^xtN~PD1Ka6)0$=V*ynqJ=<#$w-8 zE>ENs%VLN4k&ZSV)M|-J{!%)8-N=|3(Is~=7mfL0*F-Up7yT6i>QG|Xp6{#om z6MefAee4pi~?n}SQFNfITm)do7< zA#@dOWl+2~hE9|FO$w_8b^_67dnWz#ZKsDdZ?)AeWl){$bY8j)OwD_JFAqa`4e+JF zJ+6y6Kdi84*LYF({R%-A`(S5Fep-O=gM$=@>7olJT&!PG(nd;JqM`k!0*(VUEZcd2`&}BtQlkTx zQy6h{KI2-7LuvM$+sNwlgtyOpH7etxfY7Inku&zwW5bp3vbWCSqbF$@*GqWb4MQZo zT*vFYrv}{8cuHfkhj(jxhl+n#7rw#N^}W2LDL7R@yeRrYlTLuH%pRf0WQ`AZ$o6Gp0nvazJW1v!`E9juvLm~pb}Xe!;}VI`--qd=TgxZ$K5f^o zpjng??@6|Qyy(Q#b0!xAx!?QiVo25aKy}n5rtd8hb4Mqdd5QzFRiid^L>o0r21Lqz zTvYxj(nD4%^#%4nw-a4_J04g(g>ReQh;XImt8V{_(~`b^;OK)YzXl!=Qow*K{yW-o z$E;#=(+(9izPsOK&&Ff#e5wp(%{qDHlCRnOv52qj8Hv~@_|8lx=;C1A3O-)}bm`CH zy%M)e&pAn5+TCo}-c)Ucr0PT?Gn{u)(2mBg6`g3IDad4J5dxJX{-;`~b|t8;Yc1wZ zn#8B)<&va>b)x~()$_pu$u5;v^dqc~?!ttu$~ueiSv|RWVJ2Ci)Z^$<%(0Kr!h?Ic zP;{n7&D3ZHbwQdl$`fyYAt%*pqdKrBD{no|X_=(4lakT-Ia8n_t!^@M)Zb;K+*XRK z-~pvXj{nQ12r<~aM9y1Cg;zz=G-~2}mYTVV1Zy>AQB(5dfE#o?oclk#ig=mp;ap3Gl$r%U< z!IX76%S``sXIAvXseD)Qj?}l6N`hmFNniS=LPs^7pd*3N&neCq>)zzhW@Bbna?*HL z77At>qX*$q)hY&5NS9;r$Iuejo3?cy*T_EQMATLpdG9>>M~$0bVRVhMEDhO2G0GBF zpYAg$(EReFOwCtZGJ7+-5bKsmUNVWGefX$|MirQ4*##aG2O$KIcYj_x9^y|;tKSl7 zn1nC($V5uY~7uU{e&rW{DDuAParWhMbc|F+O%Nh#fRHii4pF_ z^{MA8`DI&C?Bk=<_2)NIov6ixsA@v)*ua_Q`+JORB3<@_b5ZEpf#r%#5I8pdVv`dZ zw)@_IWBAKlbVVf$mm3-ud+GX0P2<)j%%WRvjpFk5Ip?}2b^JucmmZn);gaV|%kcRW8CvD1i1g%OcSz*w; z6lj)eVA|ZAZ*gU%syHF>!m})r>I6UQuK+Ms3{X$QB}b zb!ptm*Uzs2PwlBfeLTI=nwfdJxTNGk8n}1;-sr9M)Tkx0A)~~EQT^cl)^V>dzjho% z3d~6JLzSvSKVKd_deCD3d=&7~AX=kpO1EBke&_^+F9j797QE69f}m_rac2|?O77e% zs`nO`C_61}szG11`{H^SZX~Md0z!+7{IJ4t=KsZ!g`ET*=de*BkHQYp4U~ASbf!w( zQ=79depWxbg%GR@7)4c#f~vfPGpZK6GLByP11)7t>pwrgbuN-a?_CVl*S|UI=2n{s z_Ip}qz&?tWQQCU+j7mEwmh7(IVYMrSz;hbDfFgD?vT0bh%yxBfC5xOKPE z?&pD0W&hZlwqoTq>hF6HVryX_oTr5Q(i*#G_7XliGMDcJ4Y-u5E%m&oqyV8{=QULB zg!Y14Qc51lx-`_7(=`@r`bHKgJ#W?hYR5+@%#Kqa5}^lO>B=TJ-y{}#=45#Dvb0m5 zSdESLjl98DHs0)wFHW^=TnmuOBv19#f|BpiiJo-qo%t?_yD?J`r&vky>AeI#h}mRl zlmLAy@s=*gh$T~WrxC|D^`R-x3ibe$z8Qz+r!mon zYl%ysg2dl*KCM1_1}>E(nZJqCS}9(hRiT$wwu}J5vUI4}wP?qW2lw;SldACF9xGNzWvPovSyMEmGISE^fI`VFDZ?faTR>5rMZdoh^d3H!cz?=L?E zK^-=z{{{}l;XONcXo&l(XInzDIEkpZQZ_x&95r2Bl}wY~0RdZ_ zB~T?IcwBf)qh|+Oc`T&fH#9>ry&@4SA5}$%Fkz#lsJoNc#?g&{m#KYA-=bT3C%8d; zqi_fEX>dE)vP$?RsL6^oB`tC$!v%AA%wsj{CP(PqMd!3l`tDXb##4QT|7RFw)9J)i zpFrhvM`4nCvNTq!U7Us-OSn7a(~fQ$yz2u4;jCM1DHVr6nXvS!k!zs|z`fpY{`^tc zePSDtnO*DO3b?9p;3R*4aSSg4aBu`ddN2sgml_^#Xf8;_PgZi_dPiU(U++d-f;u;y`2LFMhDr2K%daz4kaQNqtA^U=E-&gr2dXv zKOZe}6&ymO>^%OLDdP}3Ge;Kx?*aes4gPrqFL6TkiPk?W~S~gSfPH*FT zj3P`FqS^*bm6PaI4;9_o)Msab)HjKgzXQRy>)Z0v=Pke4@GmVn0+TXdKnkyk(xr^(k8W1^ep9S&=XR50$dj6Gpz1~;8+I)~& z+4m>9gSxT%L!8z}(h}boG?$tEuAs*H9pvp3<~zB_YRX=MlYqhCZ$B?3W^hJqIyrs3$UHI2O`)?{YOp&Gp5pqlFqk0zcD1n zn1gZ9?4l0jp^V-?6T$sH0E#m78Sh>mRo<--OGtBzup|SK_F(lPl37;8&=xKEhF>u zH!f?~LD$|w$-c?bkD}phu-^Twy`~`3vOEG=8DzaSc0;ap8yB(g;)C{~t6#X-9&EhG z@;}2I^?)K`{)nvo_#wcTO)q-k0v8*O`xq|Z;VDkjO}3=QgM(-3W^PN6AIAZ8o3fFf z2Bo7aQkAD?AD`vhKf0&_#5=<+O zqpyLpvpbp<9>1-fl=TZj(GWiA9HjI3H~ADxfgq>IvME>KleX2SMQHdJ5#)eUt5xtP zIaV8>NzC3WLX0^W=f3VdFQk;I{rEC#y9+6ma;=;dr1SK_aZkvozyneM+@K^sBrn^; z2TWuqL3)3dlpNc;s|YO#=hvyaWEY`>*Fcj#J{gV3%t{H-o1s4AnA*A0(&Q{mr&D0vx-ZEVWe)sr>!< z7>mhc+lYALgIG?r@Riw5I_t}mq?5<6U%^|!PuVyH!@!>Ng@hh5@-ULLgKYz`>5WZI z&IgX15;QkA?=5$#Q`tB2?<+|qB_(>67gyr7{=vwH*qy$M*99X;BBnF1NKAtn5jWHe1Sx_xT_O=OU)K ziYqG8fGL|EdOYDAgT~~G#`is;em{O3(6s20ORG;b0~_%pnuK+NgD$ul_HTDjz330v zczyj~)*e?TOn&!vu?G`p*rtu#$m8<-R6(w^ETw1IQIQ}x# zh1Y%TtTYkrrOh&8ROApM%Vzz+s%O*}A&jWe+VTicwe2Oo^SH8kyqs5(@@{ z&y#|?oji^)UIahhuF?3rVR5N~ILF)6k|ygS84?oG3%ooH;jdLT+<>NBM|CIl4 z!QUH`qyNxSk(l{$)z1uCIt6IyN92ghw3(Y7ykg}g_T~diH=S^w?0^_^soaM$PIX(k z)p6gB_vOpb$F>Hcbp&B-2HJJDKKOqN?seCz9Tr1P+l^+qf`ttfm z<;~MtAx~D-zWo8EuBgp5zF9m%ba88`6Aj(DNX-n033bJz5S=y1wJPepIxl)>k=G9V zUT@uk5;y+szEU&QO;?bX%OEjI$!^_ivK!o9P5)k&>)ZWrI)^;41yXpmb6r)PYb`@( zB@G(=BTD{f(gvmjk~SuB3Znm<@6q@33pW@nYzfo833uDKH_bw(I!&hB`C)L1D+B?x zYiTpjl)F1)`GApd63!k$=v%l+=ABV(7UAKZ>7d2UboRJJDSDK)lGKZI3|x1-`v$R% zerHk}-XAXV%D2+5Esu$c{hp5ycw5n-^PSK4vpk>Yxu5&KWmfe<_u}N2f|=cJo%W|sXNQDAPvUX-_}o(E%#wLnc8l2s za~pD(d@KU{0^z!0DPUKaaPZt{m??T;(%+gck2e_~Pq3>B5efKoRoUAjt?ww^@#dohRbQUXqCW45n@~w@T}+A`TQRA<+H3pUbZu_vhW3(T z{rM>&pQ(zfc!wAJr~2kQ?%-P^sCTZUb?id!ubNYmBh^q1!Btb7?6tsbCi^X4YAdF7 z;A(oCJDeTl9$3&5nHiBU1n2{m-c1RnHyKkq`@Etes5Yw_c~#l068jEZX0L3zN3!(7 zN^yMN^0Ua9Hyp=anGPhmPxZZ{&IJr%aC&=Ra9i}3neOxdBE&3O8062eECm5^xj-=_ z2edIVX}%}X3#G@6fCq=UC%oLIFp2W@>osoi9Sj_+*(*pop|87602 zX?3FFU;cWG#K;fZZT5qMb_2NA3&em0UQ_W-;9GZ{1ENp!TtNQ+iqQ@)ZPs*?PT)|R zw##ve#GaX4ipJzLpx$=?hkMi%L&`j=F86d&!L47J>ebVq%sutt`vH%k0}16}(5sZnyCFTE1GSpqm`(aqFqr6)n7h>#lh9*7Ack zV+GUPl>TTSUYI`E{zdQE>J-c7H$mL4eM=vXy8fzhUc*S7)3}W6+9s%MkIYCN?A8;^ z7>8h^XJ$K=@+qS~SdkZj#DWOR#B(msmKyfrQ;N8Bxe2$SWcF{w+F;7+CHFqa{RBbx zod71`QJQn*-Ijg6_jTN%5TIb)^Ah30frrhhMJnjbC#nc|E~xE39(D=eDSA?HusZw%h1b?XbZ0F74YLNFaZ_q|o7qUo{Ki zB_|BY&kGR}VGu$h9P1!Af$q+JZoIQ{V6emkn+eKQbAN{_*+f~Q?312X<>louI=J4# z7M@{4r3$HTxS>N<2i|E0bCi5DMZ-cvR(5$fWiNL$u!0VcQ}G(Kj(C~U?7klYVda<_0LONJ zcg(B+sBO7z{CQ#5O>$o2@9*2Tq#Ka3Pt$uE3%eGk1_x&|BNHTrKQNvYwutH+IVh=y4jL#|#pl*>Iz`zwu8|(6EhIp!4Q(hSlxc za5H`pRHxO9ksHG`Dx~+TCkY*s?`bW+BiJ4AqafQdMElBWK}NKC#3Um#E9-FYC_>>h zZ{2&$DhLsNo zL9{P+fX&)|deTPpI?UGmdk>eZ$1sn}Fu{)eB|W_h1!vjz5q`iB-7DEE z2g|c(A7A*~2XrO6*%~B@BQ0u!&52*Boun?-`BnJ|(QTm3khk?!f{GMQtb0#|Yl9y3 zJxKhPu*t!ryZdv$k+>{%0gjqRi0dOKgZk!VNSDQlcp=|U3Fy(X^!haZ zXP&_BdZQEQ;o_V3>zcP}3V(~MvkEVxV0X_XtBV5u7`X)%q68tL-kZ_BPn|gibvPq= zKFlbW9)_24)QaDVxC$I)2LhPX;qZ^OU)iP=zcLWjtd5vGK#WXb3&l1J9|Qwnb)C3Z zeH_#!(mRkMc~*uL0M9-m6LRblHv~h)rQl)Tp%-7D?Lu)mqlPva`_{&=xBPJFU$t8a z2Vh^M$O2_(wf*=-a`)XmDKD5Gcp_D z?TL3ZuHS?5490sIQ+EH&(OFJHD(s}F(%k0EIPPMCP?YNRyZY>zzWR==^sllQio;F& zpg5G3;&c~c$=|3vw38dGETVLSbX>V4&pe5)tE(H@+qQu_)QJ6fBvX{DV*02vLnK4X z&GAd9lslToe>!3;GTWtK4_iC}Y}_Ej z7eG!NShf@PnX_z9IMOV_#R>Dz$?5Jh&bu;!)sBMZ0>uiO6yv*-1F`aforL~wmN&8Z z4OepG6YaaTv&20eT_|G_zF3F?;atk;hPy(S53J9-tnchqN8R>?$DwH|6&dfE#Zmj9 z6xNKLjYe}pM~4WkD$~m4{;9_M+AE)DIj_{cfz2sFdV{$ph0=zVTKV`WB;}+|QJ?q3 zCvmVMcwlUz%f%@Q6Rt^{nLk#gAhFkudDe2d`m8CBjt>0J2q&^|voPT^(NtTP#fs*N z;o~f(y-?$kn#$+_zH4+81q9yln-44MYY}YMm_%kbH9&Pvgad^@O4ciYo0JkqwYt2D)Y{9>drm2wh*{(saP@FzTfD9y3P;^My$uo z=*NQso|!b26Ct$z`V?KHFEr54_Mzw6g+P_Ywj_;4>%hy{06L(5>Y}P^c2DrW(=RuW z9;SrF77h4*s~-KrC_)-?<^1=}=rst+)@9@In8jQKk+nXQ$Ml(?DjhL>7z>J~qW|En zjhKlZml^sOePZRX!4+VkKUcE{zN`ik!Hj&Ls8k^=Makj=!HACvSPB5$GEXm~?jULr z7F4>Mebhn64$Q`iZfdh3(y$Qr-2{S1L`#OWHJJPN2hGAs>nNf(??QGmRCRE6cmH#C z#gHYYz+R7_Qua#{Qo(W|KDppVI-(HmL!KOk*~lFV%`^nsK+JJa!Z1+;nrYSTwbwP< z9yZ?*J6+3yt(dSI^(pXOOf&V9vx`9(P^^pNPbV2D<)P^AN+=JqXcwAaLXD*$1SiXG#IBHtV+Q ztJ=)2OF2zr{=N-oo~Tb_HZsAEU@eRz29wKnu<_-!%fv%+aCTqdid%QSL)6NQ_Ie(O z>NURyF=MG%wUx`0{zJ>{tgpuBRs8csx@ezjYp&fv@j&$CGYJ32j#|VZXuGu}s3A<# z;bYyZ5>!JpaMAcvuf5ZhIW{AxOz)8s>)nWLXiy-ZY06IA4$+5{|o>r;#aC`&yl7G~MzaObNj`?`y%!mO` zDzt*)zr4qegQRVocQJ;V$~7ZTg0>Oy?YinYT#|bdeklvBPkUP~W?};Ce*Am8IG%|!~-Vr%c)hfe<_W8bOEWD%S$}@w%Qm`ObSXdKEjENiFYEb=D zTwIJIt^fBqfuB#^4(~_g7gh?(eqq?N63@>aiio{rahpK9Cx()N1}uR#E&mg86hHq^ z?;wl`;w(-b3C zY}+U--?Gj z0%KfO6mdSSG$V?Jnm!32rU9*kD%++i#JOr|{4e)?KL`&T1wVo@h~1~xS3y$s+fv^y zB?zyFx$jW0;f{tXy?rUZ$eWh`Pek-8>P2>T4Ad^df6g+Yn~F$9w_wCVbT*X~POHqQ zaWTijgt7%;n;KD0q`U6^!Gn)yLGhI4GFYh`uyWhs_us>R5;!KhJIcFK&hT56xTmrD zo8wi^((-^8rR@3DB>u2NB-ZDw_>FWv0z@5&@I)_{>-q+_OqKLv|8ls7siuW$ z9KzB}13wZ&({T0Q0@YMipRQX%Y3xk%XpTF?q)3M8-MUo(RFSe5hg5cPi-`%qG}lr+ zXt3t`7rp3r@R1wbq`Yx^zktZA6u(wa^1B^1)u0ddIu&OEpcade2cjK|V zb>X8>Y@!h9({L-BGVB!G{c4ppL~0+BWBA=1-)jcq$J(u zy)2_z<#aCr@Z;-`!GLdES9_WvLNw9vnuxo2&qxFT=ylP5*jR^_6dp+*Z6tS98{RVg zcb93-=&#*9UM)jXP*70k7qO4R_~|sPDL%UWbptq3o@TGXM{Cdbj(6EUm8U`g|NQek zG^Sv4$cX>F`68ns8CP@pPf#seaW813{)Y3~U5Hk_Y5?&e3d*OuU7~Q8v?DD^z?lx^ ztGMyf$@eqOqD!f)$^uBahjY*!0p~K9(T&(1l`s}4bseOTJzU%3K~r%c_h*A#uEcoB zKfO82!LX@JIbi(6Sm4|4KlLwNV5;NV@m7ZeBWKrY^`$HxSGj-D%t+SIn7JG&koT8| zgCTmMvH&ybH@#W;^ClPDA%?WYNC&?{4=9CEdOJBsW~zN9NZVLuVt?bC4-GOZ&Gt1Z z2|EN7nx9*>`mLazx4!97_rlY`PNOQc$K$;78B>m;0LoYd`VHJRjLpFteAMoY+kTB< zz3kCM-a*@LdCBX_3ef7;m|Z}!^H^^%!>QqX$HI%9k66mRQNc8v@zw50O1-F3BMX$s6(K|*|JX1ZvYZMV&-=RQx(tCk^-Wj{p zqNx;vASgL$eSZ8 zJEnE1lbk?*k6A7lcC`P{IQ8YOX)35zWYcMj^$}srYKhgTFTKM;y5D+P)p&X0<*NVi z7uk%8)qu8}8U7!1>fIj}m%Y3R2%1QiA72h@dyLmpvUIGuNOPg@(NMDFPR6 zO&R;lKCq<>4g_j%6Bm?(D*)=V#A>7n!GHnW<-DPMzdfJ6Sg<@p;~GD-PoX1x&>gEQ ziLja->UP%OMlKcN?(; zV$dYpuuLqCThkKVal5Dg($>yU`h1s{U12{1yeiO)yu|rh{3|SauA5@B3S!PeK>iNR zrL{8>2Sd%ZadVXc1yN{~Qby-`i%9i(Rz4MvyS?^4YpQ-Bp1L{p)!MPmB$lQP-NKUc z___~WB`r`<*%=86r~}aQ=_uI9&~!?XplK$(vYzz4SpkaZX7Oa$Y?{+4gH1m5eF^q6 zqD2i8!aL|zCzRm#F%{_E3}62nDu4qnEQ3GY)bhsWPLnd|q`Wvf2A&0Q+ifulf*Y0N z30OQ3Jc1`BjsFAxlmCJLA(?de7A}#aC(x!5U-gsiGS(u4@lxuU?-F|dJNEbamPlK2 zyXs(w;)bix0R}43Y0Xo-Ia-j7`2{cf%kZY2t%EE`_?(wuVh_lv{v|NbN`az z*Q?)dX{=3uu1U+vG6E+nIY8Q?OG`DZz{qcQyt8T6WjWu&)8qB3{cx0XrNfK)of7L` z1-abB!+SQIakCQpA`i8C-a(s=fy~ezVEjGeK*Vb47?L8e24XuiEth=*LF1fV*l%tz zm$v%S^`*_rqc_Wdq-McY;@qn$`ADf^HZsCywOhu+g2Qk2>(!+^<;3hjf0w>ux7^>` zB*wb)$lI^@7f6#zzVyGodeUOsBr9DjEKZv{5=tGTr7bE|Sy224q@cJHnPU^SMKOE! z?6C)j#dP;#FUCd50Ox`tD*mSS#Y-RNFETtWgtL!cd}}tA*GaLl?w(&l-2Vd1BR%GF zB+7988j=Zsn>CwV?2V*$7$3`SS<6Z+W2KG>cbyp7=PyNqMeDsVjO08dujYeBTxpG_ z+eGe`gtko>ZbZc1Qb$L@>~B)5od8ey>=}axzsn#RpNjQm{88wK4>O%~+b7mP9mNO9bHFB*SwXc%8ih?XCs& zVvn;sb{Woa{wksxHd6f^+!I~VDPt2=koid6*xR(vpnV?fhWwYkX7bPmS4di&p}1FT zvu+!dW)v8*${O6y_2G1Zy_HJT3r+BW&`Np!CqLJug41Y*+rk4^hN`9Ca%Euy0_0!g zPhnx$hhiUk>OEz}tWk$w!xkM1uHzhWbAj2vLKfZXu)sm$d4cnI_bmWtCRERj| zHj($PZ9M9THR{omzSC#Kc&SH9?Yl%dFTy2{I*Jr!g6H*No6vHJPVI%hU$cT^<>NRu zNFr)t8E!5CBtmjP_QGGBZj-ExtS4ao@@;X7NIo6TUI9Ltn6K$(fCHS5z}m3G5d|vm z2Y7mvnvLL39||^<_v{kDc4yGNX9afaB8G;HIdKj47xWYfcSMdFC@S8F-OrY_`fF&; zSb2`{Ay+SWib$eL@u!^vf;SNK0059I5aDK9VX1N-W$a5xlQ7}YMI2nR=frj+A9oY4 zCZrT+{pxl?>>3O!M1kis5+p--VHTu*ITeQrK|H%|%AL?eBHWkbum;~RNIwtO8G&_= zuomD#stFE)gy2y1xd?)a%|C9k?7?hYEb1q~?KJ|7zR11oiXfbyV3zEalXws_E@a$r zU#JUyZZjY`sa)(UXXNCSp=tsXHg@Pf&CunhnL@ulX@eD12p0@vOQsGVdl;vNvWo^H z9djxy007^fQ|+Pq5HEF2I9}HVM&)KD^M#FA?B#+UN({8~OBjW{&jrnb^fa4Bm7bD_ zfFGSvWUXK~@YScG^biY~9~Qwd=IVMvO4^|RiKl^c)+GzC99*G3WCAct=Y7(|UKg+$ zhbv1Pv`WIvsUpf^=+*Wq75fLA)w*IPMi872IjHPJW@J%tv41K+I&iT@6rq0IT#@#0 z-2|pmy@BiZwIc+z*Uqt;OR)PlaR?H04#E5X^dtR(8M?OzhcrqW7QYVO2z-LA)&kd#zjV{MqGS-(1iLo{ zA6MpCp(zDM0GQthY}}`hcsFJs*Cqe?V^h}5G{P!vPuGg$^Pq#mJikUld8Jo6yA??} zgt@(@1{A>c@@$=5ZnMNxBQU%^v9r(PM1SK=mzJmxHrCdPp`>62jh@c3Z6d9>KW1A? z4=xWZj4Td^5y5uzh*gwFvy=;~`SeHx;A>HsrQ#J+k}2S2PafQ@s}&0e2vx<_-G*IF z`f$%PdZm*zZYc{cgAb+xTslN1)4c@fTv2M>Cn%$_*}b&M<=CdlewW4szrjdRJeD9# zXZS0$v#zhUP|tXeA8=Xq**jGuUcj2}TTmjRiHgLc!2oLw?@4@6P1~7=YaI^snRm;s zVxo&S)1x}FYa+$7?S`~r(e>iK!1YyO1$oKMzy$z=7yd^;FBlX`tTE>2o7F!wV*UR3 z?#Gjw#1TWy$8yXd{<2)se47m5clx8c$) zMG9mv$b?|Vb{hc)MQoqNquW0+qkkwq&VZ}w^Ru6z2jnvqhH&-D!~Xy;I0!$%!e|?K zf_qnNJlpU1rz7JXoda;NO%As6vJY5oTu=mcS3Tw{@YOh1g`V7If0%>2-C$^agEgL# VWqA48DR_Gh{Zq!euTEUK^Isy_PXhn| literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/public_sys-resources/icon-caution.gif b/en/application-dev/ability/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 GIT binary patch literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/public_sys-resources/icon-danger.gif b/en/application-dev/ability/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 GIT binary patch literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/public_sys-resources/icon-note.gif b/en/application-dev/ability/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda GIT binary patch literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/public_sys-resources/icon-notice.gif b/en/application-dev/ability/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 GIT binary patch literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 literal 0 HcmV?d00001 diff --git a/en/application-dev/ability/stage-ability-continuation.md b/en/application-dev/ability/stage-ability-continuation.md new file mode 100644 index 0000000000..9b14be35b0 --- /dev/null +++ b/en/application-dev/ability/stage-ability-continuation.md @@ -0,0 +1,229 @@ +# Ability Continuation Development + +## When to Use + +Ability continuation is to continue the current mission of an application, including the UI component status variables and distributed objects, on another device. The UI component status variables are used to synchronize page data, and the distributed objects are used to synchronize data in the memory. + +## Available APIs + +The following table lists the APIs used for ability continuation. For details about the APIs, see [Ability](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-application-ability.md). + +**Table 1** Ability continuation APIs + +|API| Description| +|:------ | :------| +| onContinue(wantParam : {[key: string]: any}): OnContinueResult | Called by the **initiator** to save data during the ability continuation preparation process. The return value **0** means that the continuation request is accepted, and an error code means that the continuation request is denied.| +| onCreate(want: Want, param: LaunchParam): void| Called by the **target** to restore the data and page.| +| **enum** OnContinueResult | Enumerates the return values of **onContinue**. The options are as follows: **AGREE** (request accepted), **REJECT** (request denied), and **MISMATCH** (version mismatch).| + + + +**Figure 1** Ability continuation development + +![continuation_dev](figures/continuation-info.png) + +## How to Develop + +### Application Continuation + +1. Configuration + + - Configure the application to support ability continuation. + + Set the **continuable** field in the **module.json5** file to **true**. The default value is **false**. If this parameter is set to **false**, the application cannot be continued on another device. + + ```javascript + "continuable": true + ``` + + + + * Configure the application startup type. + + Set **launchType** in the **module.json5** to **standard**. Currently, only multi-instance applications can be continued on another device. + + ```javascript + "launchType": "standard" + ``` + + + + * Apply for the distributed permissions. + + Declare the **DISTRIBUTED_DATASYNC** permission in the **module.json5** file for the application. + + ```javascript + "requestPermissions": [ + { + "name": "ohos.permission.DISTRIBUTED_DATASYNC" + }, + ``` + + This permission must be granted by the user in a dialog box when the application is started for the first time. To enable the application to display a dialog box to ask for the permission, add the following code to **onWindowStageCreate** of the **Ability** class: + + ```javascript + requestPermissions = async () => { + let permissions: Array = [ + "ohos.permission.DISTRIBUTED_DATASYNC" + ]; + let needGrantPermission = false + let accessManger = accessControl.createAtManager() + Logger.info("app permission get bundle info") + let bundleInfo = await bundle.getApplicationInfo(BUNDLE_NAME, 0, 100) + Logger.info(`app permission query permission ${bundleInfo.accessTokenId.toString()}`) + for (const permission of permissions) { + Logger.info(`app permission query grant status ${permission}`) + try { + let grantStatus = await accessManger.verifyAccessToken(bundleInfo.accessTokenId, permission) + if (grantStatus === PERMISSION_REJECT) { + needGrantPermission = true + break; + } + } catch (err) { + Logger.error(`app permission query grant status error ${permission} ${JSON.stringify(err)}`) + needGrantPermission = true + break; + } + } + if (needGrantPermission) { + Logger.info("app permission needGrantPermission") + try { + await this.context.requestPermissionsFromUser(permissions) + } catch (err) { + Logger.error(`app permission ${JSON.stringify(err)}`) + } + } else { + Logger.info("app permission already granted") + } + } + ``` + + + +2. Implement the **onContinue** API. + + The **onContinue** API is called by the **initiator** to save the UI component status variables and memory data and prepare for continuation. After the application completes the continuation preparation, the system must return **OnContinueResult.AGREE** to accept the continuation request. If an error code is returned, the request is denied. If this API is not implemented, the system rejects the continuation request by default. + + Modules to import: + + ```javascript + import Ability from '@ohos.application.Ability'; + import AbilityConstant from '@ohos.application.AbilityConstant'; + ``` + + - To implement ability continuation, you must implement this API and have the value **AGREE** returned. + + + - Example + + ```javascript + onContinue(wantParam : {[key: string]: any}) { + Logger.info("onContinue using distributedObject") + // Set the user input data into the want parameter. + wantParam["input"] = AppStorage.Get('ContinueInput'); + Logger.info(`onContinue input = ${wantParam["input"]}`); + return AbilityConstant.OnContinueResult.AGREE + } + ``` + + + +3. Implement the continuation logic in the **onCreate** API. + + The **onCreate** API is called by the **target**. When the ability is started on the target device, this API is called to instruct the application to synchronize the memory data and UI component status, and triggers page restoration after the synchronization is complete. If the continuation logic is not implemented, the ability will be started in common startup mode and the page cannot be restored. + + - The target device determines whether the startup is **LaunchReason.CONTINUATION** based on **launchReason** in **onCreate**. + + + - After data restore is complete, call **restoreWindowStage** to trigger page restoration. + + + * Example + + ```javascript + onCreate(want, launchParam) { + Logger.info(`MainAbility onCreate ${AbilityConstant.LaunchReason.CONTINUATION}`) + globalThis.abilityWant = want; + if (launchParam.launchReason == AbilityConstant.LaunchReason.CONTINUATION) { + let input = want.parameters.input // get user data from want params + AppStorage.SetOrCreate('ContinueInput', input) + Logger.info(`onCreate for continuation sessionId: ${this.sessionId}`) + + this.contentStorage = new ContentStorage(); + this.context.restoreWindowStage(this.contentStorage); + } + } + ``` + + + +### Data Continuation + +1. Use distributed objects. + + Distributed data objects allow cross-device data synchronization like local variables. For two devices that form a Super Device, when data in the distributed data object of an application is added, deleted, or modified on a device, the data for the same application is also updated on the other device. Both devices can listen for the data changes and online and offline states of the other. For details, see [Distributed Data Object Development](https://gitee.com/openharmony/docs/blob/master/en/application-dev/database/database-distributedobject-guidelines.md). + + In the ability continuation scenario, the distributed data object is used to synchronize the memory data from the local device to the target device. + + - In **onContinue**, the initiator saves the data to be continued to the distributed object, sets the session ID, and sends the session ID to the target device through **wantParam**. + + ```javascript + import Ability from '@ohos.application.Ability'; + import distributedObject from '@ohos.data.distributedDataObject'; + + var g_object = distributedObject.createDistributedObject({name:undefined}); + + export default class MainAbility extends Ability { + contentStorage : ContenStorage + sessionId : string; + + onContinue(wantParam : {[key: string]: any}) { + Logger.info("onContinue using distributedObject") + this.sessionId = distributedObject.genSessionId(); + // Set the session ID for the distributed data object. + g_object.setSessionId(this.sessionId); + g_object.name = "Amy"; + // Set the session ID into the want parameter. + wantParam["session"] = this.sessionId; + return AbilityConstant.OnContinueResult.AGREE + } + + ``` + + - The target device obtains the session ID from **onCreate**, creates a distributed object, and associates the distributed object with the session ID. In this way, the distributed object can be synchronized. Before calling **restoreWindowStage**, ensure that all distributed objects required for continuation have been associated for correct data retrieval. + + ```javascript + import Ability from '@ohos.application.Ability'; + import distributedObject from '@ohos.data.distributedDataObject'; + + var g_object = distributedObject.createDistributedObject({name:undefined}); + + export default class MainAbility extends Ability { + contentStorage : ContentStorage + sessionId : string; + + statusCallback(sessionId, networkid, status) { + Logger.info(`continuation object status change, sessionId: ${sessionId}, status: ${status}, g_object.name: ${g_object.name}`) + } + + onCreate(want, launchParam) { + Logger.info(`MainAbility onCreate ${AbilityConstant.LaunchReason.CONTINUATION}`) + if (launchParam.launchReason == AbilityConstant.LaunchReason.CONTINUATION) { + // Obtain the session ID of the distributed data object from the want parameter. + this.sessionId = want.parameters.session + Logger.info(`onCreate for continuation sessionId: ${this.sessionId}`) + + g_object.on("status", this.statusCallback); + // Set the session ID for data synchronization. + g_object.setSessionId(this.sessionId); + + this.contentStorage = new ContentStorage(); + this.context.restoreWindowStage(this.contentStorage); + } + } + } + ``` + + + +For details about the complete example, see the sample. diff --git a/en/application-dev/ability/stage-ability.md b/en/application-dev/ability/stage-ability.md new file mode 100644 index 0000000000..6d436a4456 --- /dev/null +++ b/en/application-dev/ability/stage-ability.md @@ -0,0 +1,276 @@ +# Ability Development +## When to Use +The stage model is an application development model introduced in API version 9. For details about this model, see [Stage Model Overview](stage-brief.md). To develop an ability based on the stage model, you must implement the following logic: +- Create Page abilities for an application that needs to be browsed on the screen and supports man-machine interaction, such as video playback and news browsing. +- Obtain ability configuration information, such as **ApplicationInfo**, **AbilityInfo**, and **HapModuleInfo**. +- Start an ability, start an ability with start options, start an ability with the returned result, or start an ability with an account ID. +- Request certain permissions from end users. +- Notify the ability stage and ability of environment configuration changes. +- Call common components. For details, see [Call Development](stage-call.md). +- Connect to and disconnect from the Service Extension ability. For details, see [Service Extension Ability Development](stage-serviceextension.md). +- Continue the application on another device. For details, see [Ability Continuation Development](stage-ability-continuation.md). + +### Launch Type +The ability supports three launch types: singleton, multi-instance, and instance-specific. +The **launchType** item in the **module.json** file is used to specify the launch type. + +| Launch Type | Description |Description | +| ----------- | ------- |---------------- | +| standard | Multi-instance | A new instance is started each time an ability starts.| +| singleton | Singleton | Only one instance exists in the system. If an instance already exists when an ability is started, that instance is reused.| +| specified | Instance-specific| The internal service of an ability determines whether to create multiple instances during running.| + +By default, **singleton** is used. + +## Available APIs +The table below describes the APIs provided by the **AbilityStage** class, which has the **context** attribute. For details about the APIs, see [AbilityStage](../reference/apis/js-apis-application-abilitystage.md). + +**Table 1** AbilityStage APIs +|API|Description| +|:------|:------| +|void onCreate()|Called when an ability stage is created.| +|string onAcceptWant(want: Want)|Called when a specified ability is started.| +|void onConfigurationUpdated(config: Configuration)|Called when the global configuration is updated.| + +The table below describes the APIs provided by the **Ability** class. For details about the APIs, see [Ability](../reference/apis/js-apis-application-ability.md). + +**Table 2** Ability APIs +|API|Description| +|:------|:------| +|void onCreate(want: Want, param: AbilityConstant.LaunchParam)|Called when an ability is created.| +|void onDestroy()|Called when the ability is destroyed.| +|void onWindowStageCreate(windowStage: window.WindowStage)|Called when a **WindowStage** is created for the ability. You can use the **window.WindowStage** APIs to implement operations such as page loading.| +|void onWindowStageDestroy()|Called when the **WindowStage** is destroyed for the ability.| +|void onForeground()|Called when the ability is running in the foreground.| +|void onBackground()|Called when the ability is switched to the background.| +|void onNewWant(want: Want)|Called when the ability startup mode is set to singleton.| +|void onConfigurationUpdated(config: Configuration)|Called when the configuration of the environment where the ability is running is updated.| + +The **Ability** class has the **context** attribute, which belongs to the **AbilityContext** class. The **AbilityContext** class has attributes such as **abilityInfo** and **currentHapModuleInfo**. For details about the APIs, see [AbilityContext](../reference/apis/js-apis-ability-context.md). + +**Table 3** AbilityContext APIs +|API|Description| +|:------|:------| +|void startAbility(want: Want, callback: AsyncCallback)|Starts an ability.| +|void startAbility(want: Want, options: StartOptions, callback: AsyncCallback)|Starts an ability with start options.| +|void startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback)|Starts an ability with the account ID.| +|void startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback)|Starts an ability with the account ID and start options.| +|void startAbilityForResult(want: Want, callback: AsyncCallback)|Starts an ability with the returned result.| +|void startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback)|Starts an ability with the returned result and start options.| +|void startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback)|Starts an ability with the returned result and account ID.| +|void startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback)|Starts an ability with the returned result, account ID, and start options.| +|void terminateSelf(callback: AsyncCallback)|Destroys the Page ability.| +|void terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback)|Destroys the Page ability with the returned result.| + +## How to Develop +### Creating Page Abilities for an Application +To create Page abilities for an application on the stage model, you must implement the **AbilityStage** class and ability lifecycle callbacks, and use the **Window** APIs to set the pages. The sample code is as follows: +1. Import the **AbilityStage** module. + ``` + import AbilityStage from "@ohos.application.AbilityStage" + ``` +2. Implement the **AbilityStage** class. + ```ts + export default class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage onCreate") + } + } + ``` +3. Import the **Ability** module. + ```js + import Ability from '@ohos.application.Ability' + ``` +4. Implement the lifecycle callbacks of the **Ability** class. + + In the **onWindowStageCreate(windowStage)** API, use **loadContent** to set the pages to be loaded by the application. For details about how to use the **Window** APIs, see [Window Development](../windowmanager/window-guidelines.md). + ```ts + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log("MainAbility onCreate") + } + + onDestroy() { + console.log("MainAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + console.log("MainAbility onWindowStageCreate") + + windowStage.loadContent("pages/index").then((data) => { + console.log("MainAbility load content succeed with data: " + JSON.stringify(data)) + }).catch((error) => { + console.error("MainAbility load content failed with error: "+ JSON.stringify(error)) + }) + } + + onWindowStageDestroy() { + console.log("MainAbility onWindowStageDestroy") + } + + onForeground() { + console.log("MainAbility onForeground") + } + + onBackground() { + console.log("MainAbility onBackground") + } + } + ``` +### Obtaining AbilityStage and Ability Configuration Information +Both the **AbilityStage** and **Ability** classes have the **context** attribute. An application can obtain the context of the **Ability** instance through **this.context** to obtain detailed configuration information. The following example shows how the ability stage obtains the bundle code directory, HAP file name, ability name, and system language through the **context** attribute. The sample code is as follows: +```ts +import AbilityStage from "@ohos.application.AbilityStage" +export default class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage onCreate") + let context = this.context + console.log("MyAbilityStage bundleCodeDir" + context.bundleCodeDir) + + let currentHapModuleInfo = context.currentHapModuleInfo + console.log("MyAbilityStage hap module name" + currentHapModuleInfo.name) + console.log("MyAbilityStage hap module mainAbilityName" + currentHapModuleInfo.mainAbilityName) + + let config = this.context.config + console.log("MyAbilityStage config language" + config.language) + } +} +``` + +The following example shows how the ability obtains the bundle code directory, HAP file name, ability name, and system language through the **context** attribute. The sample code is as follows: +```ts +import Ability from '@ohos.application.Ability' +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log("MainAbility onCreate") + let context = this.context + console.log("MainAbility bundleCodeDir" + context.bundleCodeDir) + + let abilityInfo = this.context.abilityInfo; + console.log("MainAbility ability bundleName" + abilityInfo.bundleName) + console.log("MainAbility ability name" + abilityInfo.name) + + let config = this.context.config + console.log("MyAbilityStage config language" + config.language) + } +} +``` + +### Starting an Ability +An application can obtain the context of an **Ability** instance through **this.context** and then use the **StartAbility** API in the **AbilityContext** class to start the ability. The ability can be started by specifying **Want**, **StartOptions**, and **accountId**, and the operation result can be returned using a callback or **Promise** instance. The sample code is as follows: +```ts +let context = this.context +var want = { + "deviceId": "", + "bundleName": "com.example.MyApplication", + "abilityName": "MainAbility" +}; +var options = { + windowMode: 0, + displayId: 2 +}; +context.startAbility(want, options).then((data) => { + console.log("Succeed to start ability with data: " + JSON.stringify(data)) +}).catch((error) => { + console.error("Failed to start ability with error: "+ JSON.stringify(error)) +}) +``` + +### Starting an Ability on a Remote Device (Available only to System Applications) +>Note: The **getTrustedDeviceListSync** API of the **DeviceManager** class is open only to system applications. Therefore, cross-device ability startup applies only to system applications. +In the cross-device scenario, you must specify the ID of the remote device. The sample code is as follows: +```ts +let context = this.context +var want = { + "deviceId": getRemoteDeviceId(), + "bundleName": "com.example.MyApplication", + "abilityName": "MainAbility" +}; +context.startAbility(want).then((data) => { + console.log("Succeed to start remote ability with data: " + JSON.stringify(data)) +}).catch((error) => { + console.error("Failed to start remote ability with error: "+ JSON.stringify(error)) +}) +``` +Obtain the ID of a specified device from **DeviceManager**. The sample code is as follows: +```ts +import deviceManager from '@ohos.distributedHardware.deviceManager'; +function getRemoteDeviceId() { + if (typeof dmClass === 'object' && dmClass != null) { + var list = dmClass.getTrustedDeviceListSync(); + if (typeof (list) == 'undefined' || typeof (list.length) == 'undefined') { + console.log("MainAbility onButtonClick getRemoteDeviceId err: list is null"); + return; + } + console.log("MainAbility onButtonClick getRemoteDeviceId success:" + list[0].deviceId); + return list[0].deviceId; + } else { + console.log("MainAbility onButtonClick getRemoteDeviceId err: dmClass is null"); + } +} +``` + +### Requesting Permissions +If an application requires certain permissions, such as storage, location information, and log access, the application must request the permissions from end users. After determining the required permissions, add the permissions in the **module.json** file and use **requestPermissionsFromUser** to request the permissions from end users in the form of a dialog box. The following uses the permissions for calendar access as an example. +Modify the **module.json** file as follows: +```json +"requestPermissions": [ + { + "name": "ohos.permission.READ_CALENDAR" + } +] +``` +Request the permissions from end users in the form of a dialog box: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.READ_CALENDAR'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` +In the cross-device scenario, the application must also apply for the data synchronization permission from end users. The sample code is as follows: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.DISTRIBUTED_DATASYNC'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` + +### Notifying of Environment Configuration Changes +When the global configuration, for example, system language and color mode, changes, the **onConfigurationUpdated** API is called to notify the ability stage and ability. System applications can update the system language and color mode through the **updateConfiguration** API. The following example shows the implement of the **onConfigurationUpdated** callback in the **AbilityStage** class. The callback is triggered when the system language and color mode change. The sample code is as follows: +```ts +import Ability from '@ohos.application.Ability' +import ConfigurationConstant from '@ohos.application.ConfigurationConstant' +export default class MyAbilityStage extends AbilityStage { + onConfigurationUpdated(config) { + console.log("MyAbilityStage onConfigurationUpdated") + console.log("MyAbilityStage config language" + config.language) + console.log("MyAbilityStage config colorMode" + config.colorMode) + } +} +``` + +The following example shows the implement of the **onConfigurationUpdated** callback in the **Ability** class. The callback is triggered when the system language, color mode, and display parameters (such as the direction and density) change. The sample code is as follows: +```ts +import Ability from '@ohos.application.Ability' +import ConfigurationConstant from '@ohos.application.ConfigurationConstant' +export default class MainAbility extends Ability { { + onConfigurationUpdated(config) { + console.log("MainAbility onConfigurationUpdated") + console.log("MainAbility config language" + config.language) + console.log("MainAbility config colorMode" + config.colorMode) + console.log("MainAbility config direction" + config.direction) + console.log("MainAbility config screenDensity" + config.screenDensity) + console.log("MainAbility config displayId" + config.displayId) + } +} +``` + +## Samples +The following sample is provided to help you better understand how to develop an ability on the stage model: +- [`StageCallAbility`: Stage Ability Creation and Usage (eTS) (API9)](https://gitee.com/openharmony/app_samples/tree/master/ability/StageCallAbility) diff --git a/en/application-dev/ability/stage-brief.md b/en/application-dev/ability/stage-brief.md new file mode 100644 index 0000000000..8d4ab32e67 --- /dev/null +++ b/en/application-dev/ability/stage-brief.md @@ -0,0 +1,97 @@ +# Stage Model Overview + +### Design Ideas + +The stage model is designed to make it easier to develop complex applications in the distributed environment. + +The following figure shows the design ideas of the stage model. + +![stagedesign](figures/stagedesign.png) + +The stage model is designed based on the following considerations: + +- **Balance between application capabilities and overall system power consumption** + + On a running device, resources are preferentially guaranteed for foreground applications, on the prerequisites that the overall power consumption requirements of the system are met. The stage model balances the application capabilities and overall system power consumption through ability and UI separation, strict background control, scenario-based service mechanism, and single-process model. + +- **Native support for component continuation and collaboration** + + OpenHarmony natively supports distributed deployment. Therefore, its application framework must be designed for easier component migration and collaboration. The stage model achieves this design objective by providing features such as separation between ability and UI as well as integration of UI display and service capabilities. + +- **Support for multiple device types and window forms** + + To support multiple device types and facilitate the implementation of different window forms, the component manager and window manager must be decoupled at the architecture layer for easier tailoring. To achieve this goal, the stage model redefines the ability lifecycle and implements unidirectional dependency of the component manager and window manager. + + +### Basic Concepts + +The following figure shows the basic concepts in the stage model. + +![stageconcept](figures/stageconcept.png) + +- **HAP**: Harmony Ability Package, also called module, which is the basic unit for building, distributing, and loading OpenHarmony applications. Each HAP has a unique name, which is called **moduleName**, in an application. +- **Bundle**: an OpenHarmony application identified by **appid**. A bundle can contain multiple HAP files. Each application has a **bundleName**. However, **bundleName** must be used together with **appid** and other information to uniquely identify an application. +- **AbilityStage**: runtime class of an HAP. It is created when the HAP is loaded to the process for the first time and is visible to developers in the runtime. +- **Application**: runtime class of a bundle, which is invisible to developers in the runtime. +- **Context**: provides various capabilities that can be invoked by developers during the runtime. The **Ability** and **ExtensionAbility** classes have their own context classes, which inherit the base class **Context**. The base class provides information such as the bundle name, module name, and path. +- **Ability**: provides lifecycle callback, holds the **AbilityContext** class, and supports component continuation and collaboration. +- **ExtensionAbility**: general name of scenario-based service extension abilities. The system defines multiple scenario-based **ExtensionAbility** classes, each of which has its own **ExtensionContext**. +- **WindowStage**: local window manager. +- **Window**: basic unit managed by the window manager. It has an ArkUI engine instance. +- **ArkUI Page**: displays declarative ArkUI. + + +### Lifecycle + +The ability and ability stage lifecycles are the most important concepts in the basic process of an application. The comparison between the FA model lifecycle and stage model lifecycle is provided in [Ability Framework Overview](ability-brief.md). This section focuses on the ability lifecycle transition and the scheduling relationships between the ability, ability stage, and window stage. + +![stageabilitylifecyclecallback](figures/stageabilitylifecyclecallback.png) + +To implement multi-device-form tailoring and multi-window scalability, OpenHarmony decouples the component manager from the window manager. The ability lifecycle defined in the stage model includes only the creation, destruction, foreground, and background states. The gain focus and lose focus states that are closely related to UI content are defined in the window stage. This implements weak coupling between the abilities and windows. On the service side, the window manager notifies the component manager of the foreground and background changes, so the component manager only senses the foreground and background changes but not the focus changes. + + +### Ability Instances and Missions + +Abilities can be started in any of the following modes: + ++ **Singleton**: For each type of ability, only one instance exists in the application process. **Ability1** in the figure below is started in singleton mode. + ++ **Standard**: Each time **startAbility** is called, an instance of the specified ability type is created in the application process. **Ability2** in the figure below is started in standard mode. + ++ **Specified**: Before creating an **AbilityRecord**, you can create a key for the instance. Each time **startAbility** is called, the system asks the application which ability instance (corresponding to a key) will be used. **Ability3** in the figure below is started in specified mode. + +Each ability instance corresponds to a mission in **Launcher Recent**. + +The mission corresponding to each ability instance has a snapshot of the ability instance. After the ability instance is destroyed, the ability class information and snapshot are retained in the mission until the user deletes the information or the storage space exceeds the upper limit. + + ![AbilityComponentInstanceMission](figures/AbilityComponentInstanceMission.png) + +### ExtensionAbility Mechanism + +Different from the ability used for page display, the extension ability provides a restricted service running environment. It has the following features: + +- Its process runs independently from the main process and shares the same storage sandbox with the main process. There is no inter-process communication (IPC) between the process and the main process. + +- It has an independent context that provides scenario-specific APIs. + +- It is created by the system, rather than by applications. + +- The lifecycles of the extension ability and process are managed by the system. + +The following figure uses the widget scenario as an example. You can inherit from the **FormExtensionAbility** base class to provide the widget details. The lifecycle of the **FormExtensionAbility** instance and that of the extension ability process where the instance is located are managed by **FormManagerService**, which is a system service. + +![ExtensionAbility](figures/ExtensionAbility.png) + +### Process Model + +All OpenHarmony applications are designed to meet the single-process model. In the single-process model, an application is not allowed to configure multiple processes, and all processes in the application are created and managed by the system. Each application supports a maximum of three types of processes: + +- Main process: runs all ability components, pages, and service logic. + +- Extension process: runs classes derived from **ExtensionAbility** in the application. The lifecycle of this process is managed by a scenario-specific system service. + +- Render process: created for the WebView and used to load the WebView rendering library. + + The following figure shows the process model of an application. + + ![stageprocessmodel](figures/stageprocessmodel.png) diff --git a/en/application-dev/ability/stage-call.md b/en/application-dev/ability/stage-call.md new file mode 100644 index 0000000000..6b1ab0c3ca --- /dev/null +++ b/en/application-dev/ability/stage-call.md @@ -0,0 +1,250 @@ +# Ability Call Development +## When to Use +Ability call is an extension of the ability capabilities. It enables an ability to be invoked by external systems. In this way, the ability can be displayed as a UI page on the foreground and created and run on the background. You can use the **Call** APIs to implement data sharing between different abilities through inter-process communication (IPC). There are two roles in the ability call: caller and callee. The following scenarios are involved in the ability call development: +- Creating a callee +- Accessing the callee + +The following figure shows the ability call process. + +![stage-call](figures/stage-call.png) + +## Available APIs +The table below describes the ability call APIs. For details, see [Ability](../reference/apis/js-apis-application-ability.md#caller). + +**Table 1** Ability call APIs +|API|Description| +|:------|:------| +|Promise startAbilityByCall(want: Want)|Obtains the caller interface of the specified ability, and if the specified ability is not started, starts the ability in the background.| +|void on(method: string, callback: CalleeCallBack)|Callee.on: callback invoked when the callee registers a method.| +|void off(method: string)|Callee.off: callback invoked when the callee deregisters a method.| +|Promise call(method: string, data: rpc.Sequenceable)|Caller.call: sends agreed sequenceable data to the callee.| +|Promise callWithResult(method: string, data: rpc.Sequenceable)|Caller.callWithResult: sends agreed sequenceable data to the callee and returns the agreed sequenceable data.| +|void release()|Caller.release: releases the caller interface.| +|void onRelease(callback: OnReleaseCallBack)|Caller.onRelease: registers a callback that is invoked when the caller is disconnected.| + +## How to Develop +### Creating a Callee +For the callee, implement the callback to receive data and the methods to marshal and unmarshal data. When data needs to be received, use the **on** API to register a listener. When data does not need to be received, use the **off** API to deregister the listener. +1. Configure the ability startup mode. + + Set the ability of the callee to **singleton** in the **module.json5** file. + +|JSON Field|Description| +|:------|:------| +|"launchType"|Ability startup mode. Set this parameter to **singleton**.| + +An example of the ability configuration is as follows: +```json +"abilities":[{ + "name": ".CalleeAbility", + "srcEntrance": "./ets/CalleeAbility/CalleeAbility.ts", + "launchType": "singleton", + "description": "$string:CalleeAbility_desc", + "icon": "$media:icon", + "label": "$string:CalleeAbility_label", + "visible": true +}] +``` +2. Import the **Ability** module. +``` +import Ability from '@ohos.application.Ability' +``` +3. Define the agreed sequenceable data. + + The data formats sent and received by the caller and callee must be consistent. In the following example, the data consists of numbers and strings. The sample code is as follows: +```ts +export default class MySequenceable { + num: number = 0 + str: String = "" + + constructor(num, string) { + this.num = num + this.str = string + } + + marshalling(messageParcel) { + messageParcel.writeInt(this.num) + messageParcel.writeString(this.str) + return true + } + + unmarshalling(messageParcel) { + this.num = messageParcel.readInt() + this.str = messageParcel.readString() + return true + } +} +``` +4. Implement **Callee.on** and **Callee.off**. + + The time to register a listener for the callee depends on your application. The data sent and received before the listener is registered and that after the listener is deregistered are not processed. In the following example, the **CalleeSortMethod** listener is registered in **onCreate** of the ability and deregistered in **onDestroy**. After receiving sequenceable data, the application processes the data and returns them. You need to implement processing based on service requirements. The sample code is as follows: +```ts +const TAG: string = '[CalleeAbility]' +const MSG_SEND_METHOD: string = 'CallSendMsg' + +function sendMsgCallback(data) { + Logger.log(TAG, 'CalleeSortFunc called') + + // Obtain the sequenceable data sent by the caller. + let receivedData = new MySequenceable(0, '') + data.readSequenceable(receivedData) + Logger.log(TAG, `receiveData[${receivedData.num}, ${receivedData.str}]`) + + // Process the data. + // Return the sequenceable data result to the caller. + return new MySequenceable(receivedData.num + 1, `send ${receivedData.str} succeed`) +} + +export default class CalleeAbility extends Ability { + onCreate(want, launchParam) { + try { + this.callee.on(MSG_SEND_METHOD, sendMsgCallback) + } catch (error) { + Logger.error(TAG, `${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`) + } + } + + onDestroy() { + try { + this.callee.off(MSG_SEND_METHOD) + } catch (error) { + console.error(TAG, `${MSG_SEND_METHOD} unregister failed with error ${JSON.stringify(error)}`) + } + } +} +``` + +### Accessing the Callee +1. Import the **Ability** module. +``` +import Ability from '@ohos.application.Ability' +``` +2. Obtain the caller interface. + + The **context** attribute of the ability implements **startAbilityByCall** to obtain the caller interface of the ability. The following example uses **this.context** to obtain the **context** attribute of the **Ability** instance, uses **startAbilityByCall** to start the callee, obtain the caller interface, and register the **onRelease** listener of the caller. You need to implement processing based on service requirements. The sample code is as follows: +```ts +async onButtonGetCaller() { + try { + this.caller = await context.startAbilityByCall({ + bundleName: 'com.samples.CallApplication', + abilityName: 'CalleeAbility' + }) + if (this.caller === undefined) { + Logger.error(TAG, 'get caller failed') + return + } + Logger.log(TAG, 'get caller success') + this.regOnRelease(this.caller) + } catch (error) { + Logger.error(TAG, `get caller failed with ${error}`) + } +}.catch((error) => { + console.error(TAG + 'get caller failed with ' + error) +}) +``` +In the cross-device scenario, you need to specify the ID of the peer device. The sample code is as follows: +```ts +let TAG = '[MainAbility] ' +var caller = undefined +let context = this.context + +context.startAbilityByCall({ + deviceId: getRemoteDeviceId(), + bundleName: 'com.samples.CallApplication', + abilityName: 'CalleeAbility' +}).then((data) => { + if (data != null) { + caller = data + console.log(TAG + 'get remote caller success') + // Register the onRelease listener of the caller. + caller.onRelease((msg) => { + console.log(TAG + 'remote caller onRelease is called ' + msg) + }) + console.log(TAG + 'remote caller register OnRelease succeed') + } +}).catch((error) => { + console.error(TAG + 'get remote caller failed with ' + error) +}) +``` +Obtain the ID of the peer device from **DeviceManager**. Note that the **getTrustedDeviceListSync** API is open only to system applications. The sample code is as follows: +```ts +import deviceManager from '@ohos.distributedHardware.deviceManager'; +var dmClass; +function getRemoteDeviceId() { + if (typeof dmClass === 'object' && dmClass != null) { + var list = dmClass.getTrustedDeviceListSync(); + if (typeof (list) == 'undefined' || typeof (list.length) == 'undefined') { + console.log("MainAbility onButtonClick getRemoteDeviceId err: list is null"); + return; + } + console.log("MainAbility onButtonClick getRemoteDeviceId success:" + list[0].deviceId); + return list[0].deviceId; + } else { + console.log("MainAbility onButtonClick getRemoteDeviceId err: dmClass is null"); + } +} +``` +In the cross-device scenario, the application must also apply for the data synchronization permission from end users. The sample code is as follows: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.DISTRIBUTED_DATASYNC'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` +3. Send agreed sequenceable data. + +The sequenceable data can be sent to the callee in either of the following ways: without a return value or obtaining data returned by the callee. The method and sequenceable data must be consistent with those of the callee. The following example describes how to invoke the **Call** API to send data to the callee. The sample code is as follows: +```ts +const MSG_SEND_METHOD: string = 'CallSendMsg' +async onButtonCall() { + try { + let msg = new MySequenceable(1, 'origin_Msg') + await this.caller.call(MSG_SEND_METHOD, msg) + } catch (error) { + Logger.error(TAG, `caller call failed with ${error}`) + } +} +``` + +In the following, **CallWithResult** is used to send data **originMsg** to the callee and assign the data processed by the **CallSendMsg** method to **backMsg**. The sample code is as follows: +```ts +const MSG_SEND_METHOD: string = 'CallSendMsg' +originMsg: string = '' +backMsg: string = '' +async onButtonCallWithResult(originMsg, backMsg) { + try { + let msg = new MySequenceable(1, originMsg) + const data = await this.caller.callWithResult(MSG_SEND_METHOD, msg) + Logger.log(TAG, 'caller callWithResult succeed') + + let result = new MySequenceable(0, '') + data.readSequenceable(result) + backMsg(result.str) + Logger.log(TAG, `caller result is [${result.num}, ${result.str}]`) + } catch (error) { + Logger.error(TAG, `caller callWithResult failed with ${error}`) + } +} +``` +4. Release the caller interface. + +When the caller interface is no longer required, call the **release** API to release it. The sample code is as follows: +```ts +try { + this.caller.release() + this.caller = undefined + Logger.log(TAG, 'caller release succeed') +} catch (error) { + Logger.error(TAG, `caller release failed with ${error}`) +} +``` + +## Development Example +The following sample is provided to help you better understand how to develop an ability call in the stage model: + +[StageCallAbility](https://gitee.com/openharmony/app_samples/tree/master/ability/StageCallAbility) + +In this sample, the **AbilityStage** APIs are implemented in the **AbilityStage.ts** file in the **Application** directory, the **Ability** APIs are implemented in the **MainAbility** directory, and **pages/index** is the pages of the ability. Another ability and callee are implemented in the **CalleeAbility** directory, and its pages are the content configured in **pages/second**. The **MainAbility** functions as the caller, and the **CalleeAbility** functions as the callee. After starting the **CalleeAbility**, the **MainAbility** obtains the caller interface, processes the string entered by the user, and transfers the processed string to the **CalleeAbility**. The **CalleeAbility** refreshes the page based on the received data and returns the result to the **MainAbility**. diff --git a/en/application-dev/ability/stage-formextension.md b/en/application-dev/ability/stage-formextension.md new file mode 100644 index 0000000000..3da3199ba3 --- /dev/null +++ b/en/application-dev/ability/stage-formextension.md @@ -0,0 +1,348 @@ +# Stage Widget Development + +## Widget Overview + +A widget is a set of UI components used to display important information or operations for an application. It provides users with direct access to a desired application service, without requiring them to open the application. + +A widget displays brief information about an application on the UI of another application (host application, currently system applications only) and provides basic interactive features such as opening a UI page or sending a message. The widget host is responsible for displaying the service widget. + +Basic concepts: + +- Widget provider + The widget provider is an atomic service that provides the content to be displayed. It controls the display content, component layout, and component click events of a widget. +- Widget host + The widget host is an application that displays the widget content and controls the position where the widget is displayed in the host application. +- Widget Manager + The Widget Manager is a resident agent that manages widgets added to the system and provides functions such as periodic widget update. + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The widget host and provider do not keep running all the time. The Widget Manager starts the widget provider to obtain widget information when a widget is added, deleted, or updated. + +You only need to develop widget content as the widget provider. The system automatically handles the work done by the widget host and Widget Manager. + +The widget provider controls the widget content to display, component layout, and click events bound to components. + +## When to Use + +Stage ability development refers to the development conducted by the widget provider based on the [stage model](stage-brief.md). As a widget provider, you need to carry out the following operations: + +- Develop the lifecycle callback functions in **FormExtension**. +- Create a **FormBindingData** object. +- Update a widget through **FormProvider**. +- Develop the widget UI page. + +## Available APIs + +The **FormExtension** class has the **context** attribute. For details on the APIs provided by the **FormExtension** class, see [FormExtension](../reference/apis/js-apis-formextension.md). + +**Table 1** FormExtension APIs + +| API | Description | +| :----------------------------------------------------------- | :------------------------------------------- | +| onCreate(want: Want): formBindingData.FormBindingData | Called to notify the widget provider that a **Form** instance (widget) has been created. | +| onCastToNormal(formId: string): void | Called to notify the widget provider that a temporary widget has been converted to a normal one.| +| onUpdate(formId: string): void | Called to notify the widget provider that a widget has been updated. | +| onVisibilityChange(newStatus: { [key: string]: number }): void | Called to notify the widget provider of the change of widget visibility. | +| onEvent(formId: string, message: string): void | Called to instruct the widget provider to receive and process the widget event. | +| onDestroy(formId: string): void | Called to notify the widget provider that a **Form** instance (widget) has been destroyed. | +| onConfigurationUpdated(config: Configuration): void; | Called when the configuration of the environment where the ability is running is updated. | + +The **context** attribute of the **FormExtension** class inherits from the **FormExtensionContext** class. For details about the APIs provided by the **FormExtensionContext** class, see [FormExtensionContext](../reference/apis/js-apis-formextensioncontext.md). + +**Table 2** FormExtensionContext APIs + +| API | Description | +| :----------------------------------------------------------- | :------------------------ | +| updateForm(formId: string, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback\): void | Updates a widget. This method uses a callback to return the result. | +| updateForm(formId: string, formBindingData: formBindingData.FormBindingData): Promise\ | Updates a widget. This method uses a promise to return the result.| + +For details about the **FormProvider** APIs, see [FormProvider](../reference/apis/js-apis-formprovider.md). + +**Table 3** FormProvider APIs + +| API | Description | +| :----------------------------------------------------------- | :------------------------------------------------ | +| setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback<void>): void; | Sets the next refresh time for a widget. This API uses an asynchronous callback to return the result. | +| setFormNextRefreshTime(formId: string, minute: number): Promise<void>; | Sets the next refresh time for a widget. This API uses a promise to return the result.| +| updateForm(formId: string, formBindingData: FormBindingData, callback: AsyncCallback<void>): void; | Updates a widget. This API uses an asynchronous callback to return the result. | +| updateForm(formId: string, formBindingData: FormBindingData): Promise<void>; | Updates a widget. This API uses a promise to return the result. | + +## How to Develop + +### Creating a Form Extension + +To create a widget in the stage model, you need to implement the lifecycle callback functions of **FormExtension**. The sample code is as follows: + +1. Import the required modules. + + ```javascript + import FormExtension from '@ohos.application.FormExtension' + import formBindingData from '@ohos.application.formBindingData' + import formInfo from '@ohos.application.formInfo' + import formProvider from '@ohos.application.formProvider' + ``` + +2. Implement the lifecycle callback functions of **FormExtension**. + + ```javascript + export default class FormAbility extends FormExtension { + onCreate(want) { + console.log('FormAbility onCreate'); + // Persistently store widget information for subsequent use, such as widget instance retrieval and update. + let obj = { + "title": "titleOnCreate", + "detail": "detailOnCreate" + }; + let formData = formBindingData.createFormBindingData(obj); + return formData; + } + onCastToNormal(formId) { + // Called when the widget host converts the temporary widget into a normal one. The widget provider should do something to respond to the conversion. + console.log('FormAbility onCastToNormal'); + } + onUpdate(formId) { + // To support scheduled update, periodic update, or update requested by the widget host for a widget, override this method for data update. + console.log('FormAbility onUpdate'); + let obj = { + "title": "titleOnUpdate", + "detail": "detailOnUpdate" + }; + let formData = formBindingData.createFormBindingData(obj); + formProvider.updateForm(formId, formData).catch((error) => { + console.log('FormAbility updateForm, error:' + JSON.stringify(error)); + }); + } + onVisibilityChange(newStatus) { + // Called when the widget host initiates an event about visibility changes. The widget provider should do something to respond to the notification. + console.log('FormAbility onVisibilityChange'); + } + onEvent(formId, message) { + // If the widget supports event triggering, override this method and implement the trigger. + console.log('FormAbility onEvent'); + } + onDestroy(formId) { + // Delete widget data. + console.log('FormAbility onDestroy'); + } + onConfigurationUpdated(config) { + console.log('FormAbility onConfigurationUpdated, config:' + JSON.stringify(config)); + } + } + ``` + +### Configuring config.json for the Form Ability + +Configure the **module.json** file for the **Form** ability. + +- The internal field structure of the **extensionAbility** module is described as follows: + + | Field | Description | Data Type | Default | + | ----------- | ------------------------------------------------------------ | ---------- | -------------------- | + | name | Name of an extension ability. | String | No | + | srcEntrance | JS code path of the extension ability. | String | No | + | description | Description of the extension ability. The value can be a string or a resource index to descriptions in multiple languages.| String | Yes (initial value: left empty)| + | icon | Index of the extension ability icon file. | String | Yes (initial value: left empty)| + | label | Descriptive information about the extension ability presented externally. The value can be a string or a resource index to the description.| String | Yes (initial value: left empty)| + | type | Type of the extension ability. The value can be **form** or **service**. | String | No | + | permissions | Permissions required for abilities of another application to call the current ability. | String array| Yes (initial value: left empty)| + | metadata | Metadata of the extension ability. It describes the configuration information of the extension ability.| Object | Yes (initial value: left empty) | + + For a Form Extension ability, set **type** to **form** and **metadata** to the widget details. + + A configuration example is as follows: + + ```json + "extensionAbilities": [{ + "name": "FormAbility", + "srcEntrance": "./ets/FormAbility/FormAbility.ts", + "label": "$string:form_FormAbility_label", + "description": "$string:form_FormAbility_desc", + "type": "form", + "metadata": [{ + "name": "ohos.extension.form", + "resource": "$profile:form_config" + }] + }] + ``` + +- Configure the widget profile module. In the metadata of the Form Extension ability, the resource file path specified by **ohos.extension.form** must be used. For example, **$profile:form_config** means that **form_config.json** in the **resources/base/profile/** directory of the development view is used as the widget profile. + + The internal field structure is described as follows: + + | Field | Description | Data Type | Default | + | ------------------- | ------------------------------------------------------------ | ---------- | ------------------------ | + | name | Class name of the widget. The value is a string with a maximum of 127 bytes. | String | No | + | description | Description of the widget. The value can be a string or a resource index to descriptions in multiple languages. The value is a string with a maximum of 255 bytes.| String | Yes (initial value: left empty) | + | src | Full path of the UI code corresponding to the widget. | String | No | + | window | Window-related configurations. | Object | Yes | + | isDefault | Whether the widget is a default one. Each ability has only one default widget.
**true**: The widget is the default one.
**false**: The widget is not the default one.| Boolean | No | + | colorMode | Color mode of the widget. Available values are as follows:
**auto**: The widget adopts the auto-adaptive color mode.
**dark**: The widget adopts the dark color mode.
**light**: The widget adopts the light color mode.| String | Yes (initial value: **auto**)| + | supportDimensions | Grid styles supported by the widget. Available values are as follows:
1 * 2: indicates a grid with one row and two columns.
2 * 2: indicates a grid with two rows and two columns.
2 * 4: indicates a grid with two rows and four columns.
4 * 4: indicates a grid with four rows and four columns.| String array| No | + | defaultDimension | Default grid style of the widget. The value must be available in the **supportDimensions** array of the widget.| String | No | + | updateEnabled | Whether the widget can be updated periodically. Available values are as follows:
**true**: The widget can be updated periodically, depending on the update way you select, either at a specified interval (**updateDuration**) or at the scheduled time (**scheduledUpdateTime**). **updateDuration** is preferentially recommended.
**false**: The widget cannot be updated periodically.| Boolean | No | + | scheduledUpdateTime | Scheduled time to update the widget. The value is in 24-hour format and accurate to minute. | String | Yes (initial value: **0:0**) | + | updateDuration | Interval to update the widget. The value is a natural number, in the unit of 30 minutes.
If the value is **0**, this field does not take effect.
If the value is a positive integer ***N***, the interval is calculated by multiplying ***N*** and 30 minutes.| Number | Yes (initial value: **0**) | + | formConfigAbility | Link to a specific page of the application. The value is a URI. | String | Yes (initial value: left empty) | + | formVisibleNotify | Whether the widget is allowed to use the widget visibility notification. | String | Yes (initial value: left empty) | + | metaData | Metadata of the widget. This field contains the array of the **customizeData** field. | Object | Yes (initial value: left empty) | + + A configuration example is as follows: + + ```json + { + "forms": [{ + "name": "widget", + "description": "This is a service widget.", + "src": "./js/widget/pages/index/index", + "window": { + "autoDesignWidth": true, + "designWidth": 720 + }, + "isDefault": true, + "colorMode": "auto", + "supportDimensions": ["2*2"], + "defaultDimension": "2*2", + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "formConfigAbility": "ability://ohos.samples.FormApplication.MainAbility" + }] + } + ``` + + +### Widget Data Persistence + +Mostly, the widget provider is started only when it needs to obtain information about a widget. The Widget Manager supports multi-instance management and uses the widget ID to identify an instance. If the widget provider supports widget data modification, it must persistently store the data based on the widget ID, so that it can access the data of the target widget when obtaining, updating, or starting a widget. + +```javascript + onCreate(want) { + console.log('FormAbility onCreate'); + + let formId = want.parameters["ohos.extra.param.key.form_identity"]; + let formName = want.parameters["ohos.extra.param.key.form_name"]; + let tempFlag = want.parameters["ohos.extra.param.key.form_temporary"]; + // Persistently store widget information for subsequent use, such as widget instance retrieval and update. + storeFormInfo(formId, formName, tempFlag, want); + + let obj = { + "title": "titleOnCreate", + "detail": "detailOnCreate" + }; + let formData = formBindingData.createFormBindingData(obj); + return formData; + } +``` + +You should override **onDestroy** to delete widget data. + +```javascript + onDestroy(formId) { + // Delete widget data. + deleteFormInfo(formId); + console.log('FormAbility onDestroy'); + } +``` + +For details about the persistence method, see [Lightweight Data Store Development](../database/database-preference-guidelines.md). + +Note that the **Want** passed by the widget host to the widget provider contains a temporary flag, indicating whether the requested widget is a temporary one. + +Normal widget: a widget that will be persistently used by the widget host + +Temporary widget: a widget that is temporarily used by the widget host + +Data of a temporary widget is not persistently stored. If the widget framework is killed and restarted, data of a temporary widget will be deleted. However, the widget provider is not notified of which widget is deleted, and still keeps the data. Therefore, the widget provider should implement data clearing. In addition, the widget host may convert a temporary widget into a normal one. If the conversion is successful, the widget provider should process the widget ID and store the data persistently. This prevents the widget provider from deleting persistent data when clearing temporary widgets. + +### Developing the Widget UI Page +You can use HML, CSS, and JSON to develop the UI page for a JavaScript-programmed widget. + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> Currently, only the JavaScript-based web-like development paradigm can be used to develop the widget UI. + + - hml: + ```html +

+ ``` + + - css: + + ```css +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.bg-img { + flex-shrink: 0; + height: 100%; +} + +.container-inner { + flex-direction: column; + justify-content: flex-end; + align-items: flex-start; + height: 100%; + width: 100%; + padding: 12px; +} + +.title { + font-size: 19px; + font-weight: bold; + color: white; + text-overflow: ellipsis; + max-lines: 1; +} + +.detail_text { + font-size: 16px; + color: white; + opacity: 0.66; + text-overflow: ellipsis; + max-lines: 1; + margin-top: 6px; +} + ``` + + - json: + ```json + { + "data": { + "title": "TitleDefault", + "detail": "TextDefault" + }, + "actions": { + "routerEvent": { + "action": "router", + "abilityName": "com.example.MyApplication.hmservice.FormAbility", + "params": { + "message": "add detail" + } + } + } + } + ``` + +Now you've got a widget shown below. + +![fa-form-example](figures/fa-form-example.png) + +## Development Example + +The following sample is provided to help you better understand how to develop a widget on the stage model: + +[FormExtAbility](https://gitee.com/openharmony/app_samples/tree/master/ability/FormExtAbility) + +This sample provides a widget. Users can create, update, and delete widgets on the home screen of their phones or by using their own widget host. This sample also implements widget information persistence by using lightweight data storage. diff --git a/en/application-dev/ability/stage-serviceextension.md b/en/application-dev/ability/stage-serviceextension.md new file mode 100644 index 0000000000..af7b31cc11 --- /dev/null +++ b/en/application-dev/ability/stage-serviceextension.md @@ -0,0 +1,87 @@ +# Service Extension Ability Development + +## When to Use +**ExtensionAbility** is the base class of the new Extension component in the stage model. It is used to process missions without UIs. The lifecycle of an Extension ability is simple, and it does not involve foreground or background. **ServiceExtensionAbility** is extended from **ExtensionAbility**. + +You can customize a class that inherits from **ServiceExtensionAbility** and override the lifecycle callbacks in the base class to perform service logic operations during the initialization, connection, and disconnection processes. + +## Available APIs + +**Table 1** ServiceExtensionAbility lifecycle callbacks +|API|Description| +|:------|:------| +|onCreate|Called for the initialization when **startAbility** or **connectAbility** is invoked for a given ability for the first time.| +|onRequest|Called each time **startAbility** is invoked for a given ability. The initial value of **startId** is 1, and the value is incremented by one each time **startAbility** is invoked for that ability.| +|onConnect|Called when **connectAbility** is invoked for a given ability. This callback is not invoked for repeated calling of **connectAbility** for a specific ability. However, it will be invoked when **disconnectAbility** is called to disconnect an ability and then **connectAbility** is called to connect the ability again. The returned result is a **RemoteObject**.| +|onDisconnect|Called when **disconnectAbility** is called for a given ability. If the Extension ability is started by **connectAbility** and is not bound by other applications, the **onDestroy** callback will also be triggered to destroy the Extension ability.| +|onDestroy|Called when **terminateSelf** is invoked to terminate the ability.| + + +## Constraints + +- Currently, OpenHarmony does not support creation of a Service Extension ability for third-party applications. + + +## How to Develop + +1. Create a Service Extension ability. + +Customize a class that inherits from **ServiceExtensionAbility** in the .ts file and override the lifecycle callbacks of the base class. The code sample is as follows: + + ```js + import rpc from '@ohos.rpc' + class StubTest extends rpc.RemoteObject { + constructor(des) { + super(des); + } + onRemoteRequest(code, data, reply, option) { + } + } + + class ServiceExt extends ServiceExtensionAbility { + onCreate(want) { + console.log('onCreate, want:' + want.abilityName); + } + onRequest(want, startId) { + console.log('onRequest, want:' + want.abilityName); + } + onConnect(want) { + console.log('onConnect , want:' + want.abilityName); + return new StubTest("test"); + } + onDisconnect(want) { + console.log('onDisconnect, want:' + want.abilityName); + } + onDestroy() { + console.log('onDestroy'); + } + } + ``` + + +2. Register the Service Extension ability. + +Declare the Service Extension ability in the **module.json** file by setting its **type** attribute to **service**. + +**module.json configuration example** + +```json +"extensionAbilities":[{ + "name": "ServiceExtAbility", + "icon": "$media:icon", + "description": "service", + "type": "service", + "visible": true, + "srcEntrance": "./ets/ServiceExtAbility/ServiceExtAbility.ts" +}] +``` + +## Development Example + +The following sample is provided to help you better understand how to develop a Service Extension ability: + +- [ServiceExtensionAbility](https://gitee.com/openharmony/app_samples/tree/master/ability/ServiceExtAbility) + +This sample shows how to: + +Create a Service Extension ability in the **ServiceExtAbility.ts** file in the **ServiceExtensionAbility** directory. diff --git a/en/application-dev/application-dev-website.md b/en/application-dev/application-dev-website.md index dc8ef359e3..2e560fdf72 100644 --- a/en/application-dev/application-dev-website.md +++ b/en/application-dev/application-dev-website.md @@ -475,6 +475,7 @@ - [@ohos.application.appManager](reference/apis/js-apis-appmanager.md) - [@ohos.application.Configuration](reference/apis/js-apis-configuration.md) - [@ohos.application.ConfigurationConstant](reference/apis/js-apis-configurationconstant.md) + - [@ohos.application.abilityMonitor](reference/apis/js-apis-application-abilityMonitor.md) - [@ohos.ability.featureAbility](reference/apis/js-apis-featureAbility.md) - [@ohos.application.formBindingData](reference/apis/js-apis-formbindingdata.md) - [@ohos.application.FormExtension](reference/apis/js-apis-formextension.md) diff --git a/en/application-dev/reference/apis/js-apis-ability-context.md b/en/application-dev/reference/apis/js-apis-ability-context.md new file mode 100644 index 0000000000..418cd920f5 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-ability-context.md @@ -0,0 +1,497 @@ +# AbilityContext + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements the ability context. This module is inherited from **Context**. + + +## Usage + + +Before using the **AbilityContext** module, you must define a child class that inherits from **Ability**. + + + +```js +import Ability from '@ohos.application.Ability' +class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + let context = this.context; + } +} +``` + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| abilityInfo | AbilityInfo | Yes| No| Ability information.| +| currentHapModuleInfo | HapModuleInfo | Yes| No| Information about the current HAP.| + + +## AbilityContext.startAbility + +startAbility(want: Want, callback: AsyncCallback<void>): void + +Starts an ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information about the **Want** used for starting an ability.| + | callback | AsyncCallback<void> | Yes| Callback used to return the result.| + +**Example** + + ```js + var want = { + "deviceId": "", + "bundleName": "com.extreme.test", + "abilityName": "com.extreme.test.MainAbility" + }; + this.context.startAbility(want, (error) => { + console.log("error.code = " + error.code) + }) + ``` + + +## AbilityContext.startAbility + +startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void + +Starts an ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want) | Yes| Information about the **Want** used for starting an ability.| + | options | StartOptions | Yes| Parameters used for starting the ability.| + | callback | AsyncCallback<void> | Yes| Callback used to return the result.| + +**Example** + + ```js + var want = { + "deviceId": "", + "bundleName": "com.extreme.test", + "abilityName": "com.extreme.test.MainAbility" + }; + var options = { + windowMode: 0, + }; + this.context.startAbility(want, options, (error) => { + console.log("error.code = " + error.code) + }) + ``` + + +## AbilityContext.startAbility + +startAbility(want: Want, options?: StartOptions): Promise<void>; + +Starts an ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information about the **Want** used for starting an ability.| + | options | StartOptions | No| Parameters used for starting the ability.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result.| + +**Example** + + ```js + var want = { + "deviceId": "", + "bundleName": "com.extreme.test", + "abilityName": "com.extreme.test.MainAbility" + }; + var options = { + windowMode: 0, + }; + this.context.startAbility(want, options) + .then((data) => { + console.log('Operation successful.') + }).catch((error) => { + console.log('Operation failed.'); + }) + ``` + + +## AbilityContext.startAbilityForResult + +startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): void; + +Starts an ability. This API uses a callback to return the execution result when the ability is terminated. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want |[Want](js-apis-featureAbility.md#Want)| Yes| Information about the **Want** used for starting an ability.| + | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | Yes| Callback used to return the result.| + + +**Example** + + ```js + this.context.startAbilityForResult( + {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, + (error, result) => { + console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code) + console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode) + } + ); + ``` + +## AbilityContext.startAbilityForResult + +startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback<AbilityResult>): void; + +Starts an ability. This API uses a callback to return the execution result when the ability is terminated. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want |[Want](js-apis-featureAbility.md#Want)| Yes| Information about the **Want** used for starting an ability.| + | options | StartOptions | Yes| Parameters used for starting the ability.| + | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | Yes| Callback used to return the result.| + + +**Example** + + ```js + var options = { + windowMode: 0, + }; + this.context.startAbilityForResult( + {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options, + (error, result) => { + console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code) + console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode) + } + ); + ``` + + +## AbilityContext.startAbilityForResult + +startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityResult>; + +Starts an ability. This API uses a promise to return the execution result when the ability is terminated. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information about the **Want** used for starting an ability.| + | options | StartOptions | No| Parameters used for starting the ability.| + + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | Promise used to return the result.| + +**Example** + + ```js + var options = { + windowMode: 0, + }; + this.context.startAbilityForResult({bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options).then((result) => { + console.log("startAbilityForResult Promise.resolve is called, result.resultCode = " + result.resultCode) + }, (error) => { + console.log("startAbilityForResult Promise.Reject is called, error.code = " + error.code) + }) + ``` + + +## AbilityContext.terminateSelf + +terminateSelf(callback: AsyncCallback<void>): void; + +Terminates this ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | callback | AsyncCallback<void> | Yes| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.terminateSelf((err) => { + console.log('terminateSelf result:' + JSON.stringify(err)); + }); + ``` + + +## AbilityContext.terminateSelf + +terminateSelf(): Promise<void>; + +Terminates this ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.terminateSelf(want).then((data) => { + console.log('success:' + JSON.stringify(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringify(error)); + }); + ``` + + +## AbilityContext.terminateSelfWithResult + +terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<void>): void; + +Terminates this ability. This API uses a callback to return the information to the caller of **startAbilityForResult**. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | Yes| Information returned to the caller.| + | callback | AsyncCallback<void> | Yes| Callback used to return the result.| + +**Example** + + ```js + this.context.terminateSelfWithResult( + { + want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"}, + resultCode: 100 + }, (error) => { + console.log("terminateSelfWithResult is called = " + error.code) + } + ); + ``` + + +## AbilityContext.terminateSelfWithResult + +terminateSelfWithResult(parameter: AbilityResult): Promise<void>; + +Terminates this ability. This API uses a promise to return information to the caller of **startAbilityForResult**. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | Yes| Information returned to the caller.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result.| + +**Example** + + ```js + this.context.terminateSelfWithResult( + { + want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"}, + resultCode: 100 + }).then((result) => { + console.log("terminateSelfWithResult") + } + ) + ``` + + +## AbilityContext.startAbilityByCall + +startAbilityByCall(want: Want): Promise<Caller>; + +Obtains the caller interface of the specified ability, and if the specified ability is not started, starts the ability in the background. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information about the ability to start, including the ability name, bundle name, and device ID. If the device ID is left blank or the default value is used, the local ability will be started.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<Caller> | Promise used to return the caller object to communicate with.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + console.log('Caller GetCaller Get ' + call); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + } + ``` + + +## AbilityContext.requestPermissionsFromUser + +requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; + +Requests permissions from the user by displaying a pop-up window. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | permissions | Array<string> | Yes| Permissions to request.| + | callback | AsyncCallback<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | Yes| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ``` + this.context.requestPermissionsFromUser(permissions,(result) => { + console.log('requestPermissionsFromUserresult:' + JSON.stringify(result)); + }); + ``` + + +## AbilityContext.requestPermissionsFromUser + +requestPermissionsFromUser(permissions: Array<string>) : Promise<PermissionRequestResult>; + +Requests permissions from the user by displaying a pop-up window. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | permissions | Array<string> | Yes| Permissions to request.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ``` + this.context.requestPermissionsFromUser(permissions).then((data) => { + console.log('success:' + JSON.stringify(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringify(error)); + }); + ``` + + +## AbilityContext.setMissionLabel + +setMissionLabel(label: string, callback:AsyncCallback<void>): void; + +Sets the label of the ability displayed in the task. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | label | string | Yes| Label of the ability to set.| + | callback | AsyncCallback<void> | Yes| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.setMissionLabel("test",(result) => { + console.log('requestPermissionsFromUserresult:' + JSON.stringify(result)); + }); + ``` + + +## AbilityContext.setMissionLabel + +setMissionLabel(label: string): Promise<void> + +Sets the label of the ability displayed in the task. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | label | string | Yes| Label of the ability to set.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.setMissionLabel("test").then((data) => { + console.log('success:' + JSON.stringify(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringify(error)); + }); + ``` diff --git a/en/application-dev/reference/apis/js-apis-abilitystagecontext.md b/en/application-dev/reference/apis/js-apis-abilitystagecontext.md new file mode 100644 index 0000000000..f5d9e95146 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-abilitystagecontext.md @@ -0,0 +1,34 @@ +# AbilityStageContext + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements the context of an ability stage. This module is inherited from [Context](js-apis-application-context.md). + + +## Usage + + +The ability stage context is obtained through an **AbilityStage** instance. + + + +```js +import AbilityStage from '@ohos.application.AbilityStage'; +class MyAbilityStage extends AbilityStage { + onCreate() { + let abilityStageContext = this.context; + } +} +``` + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| currentHapModuleInfo | HapModuleInfo | Yes| No| **ModuleInfo** object corresponding to the **AbilityStage**.| +| config | [Configuration](js-apis-configuration.md) | Yes| No| Configuration for the environment where the application is running.| diff --git a/en/application-dev/reference/apis/js-apis-application-ability.md b/en/application-dev/reference/apis/js-apis-application-ability.md new file mode 100644 index 0000000000..6dd48dc410 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-application-ability.md @@ -0,0 +1,591 @@ +# Ability + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Manages the ability lifecycle and context. + + +## Modules to Import + + +``` +import Ability from '@ohos.application.Ability'; +``` + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| context | [AbilityContext](js-apis-ability-context.md) | Yes| No| Context of an ability.| +| launchWant | [Want](js-apis-featureAbility.md#Want)| Yes| No| Parameters for starting the ability.| +| lastRequestWant | [Want](js-apis-featureAbility.md#Want)| Yes| No| Parameters used when the ability was started last time.| + + +## Ability.onCreate + +onCreate(want: Want, param: AbilityConstant.LaunchParam): void; + +Called to initialize the service logic when an ability is created. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information related to this ability, including the ability name and bundle name.| + | param | AbilityConstant.LaunchParam | Yes| Parameters for starting the ability, and the reason for the last abnormal exit.| + +**Example** + + ```js + class myAbility extends Ability { + onCreate(want, param) { + console.log('onCreate, want:' + want.abilityName); + } + } + ``` + + +## Ability.onWindowStageCreate + +onWindowStageCreate(windowStage: window.WindowStage): void + +Called when a **WindowStage** is created for this ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | windowStage | window.WindowStage | Yes| **WindowStage** information.| + +**Example** + + ```js + class myAbility extends Ability { + onWindowStageCreate(windowStage) { + console.log('onWindowStageCreate'); + } + } + ``` + + +## Ability.onWindowStageDestroy + +onWindowStageDestroy(): void + +Called when the **WindowStage** is destroyed for this ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Example** + + ```js + class myAbility extends Ability { + onWindowStageDestroy() { + console.log('onWindowStageDestroy'); + } + } + ``` + + +## Ability.onWindowStageRestore + +onWindowStageRestore(windowStage: window.WindowStage): void + +Called when the **WindowStage** is restored during the migration of this ability, which is a multi-instance ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | windowStage | window.WindowStage | Yes| **WindowStage** information.| + +**Example** + + ```js + class myAbility extends Ability { + onWindowStageRestore(windowStage) { + console.log('onWindowStageRestore'); + } + } + ``` + + +## Ability.onDestroy + +onDestroy(): void; + +Called when this ability is destroyed to clear resources. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Example** + + ```js + class myAbility extends Ability { + onDestroy() { + console.log('onDestroy'); + } + } + ``` + + +## Ability.onForeground + +onForeground(): void; + +Called when this ability is running in the foreground. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Example** + + ```js + class myAbility extends Ability { + onForeground() { + console.log('onForeground'); + } + } + ``` + + +## Ability.onBackground + +onBackground(): void; + +Callback when this ability is switched to the background. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Example** + + ```js + class myAbility extends Ability { + onBackground() { + console.log('onBackground'); + } + } + ``` + + +## Ability.onContinue + +onContinue(wantParam : {[key: string]: any}): AbilityConstant.OnContinueResult; + +Called to save data during the ability migration preparation process. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | wantParam | {[key: string]: any} | Yes| **want** parameter.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | AbilityConstant.OnContinueResult | Continuation result.| + +**Example** + + ```js + class myAbility extends Ability { + onContinue(wantParams) { + console.log('onContinue'); + wantParams["myData"] = "my1234567"; + return true; + } + } + ``` + + +## Ability.onNewWant + +onNewWant(want: Want): void; + +Called when the ability startup mode is set to singleton. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Want parameters, such as the ability name and bundle name.| + +**Example** + + ```js + class myAbility extends Ability { + onNewWant(want) { + console.log('onNewWant, want:' + want.abilityName); + } + } + ``` + + +## Ability.onConfigurationUpdated + +onConfigurationUpdated(config: Configuration): void; + +Called when the configuration of the environment where the ability is running is updated. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | config | [Configuration](js-apis-configuration.md) | Yes| New configuration.| + +**Example** + + ```js + class myAbility extends Ability { + onConfigurationUpdated(config) { + console.log('onConfigurationUpdated, config:' + JSON.stringify(config)); + } + } + ``` + + +## Caller + +Implements sending of sequenceable data to the target ability when an ability (caller) invokes the target ability (callee). + + +## Caller.call + +call(method: string, data: rpc.Sequenceable): Promise<void>; + +Sends sequenceable data to the target ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | method | string | Yes| Notification message string negotiated between the two abilities. The message is used to instruct the callee to register a function to receive the sequenceable data.| + | data | rpc.Sequenceable | Yes| Sequenceable data. You need to customize the data.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return a response.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ // Custom sequenceable data structure + constructor(name, str) { + this.name = name; + this.str = str; + } + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; // Notification message string negotiated by the two abilities + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + let msg = new MyMessageAble(1, "world"); // See the definition of Sequenceable. + caller.call(method, msg) + .then(() => { + console.log('Caller call() called'); + }).catch((e) => { + console.log('Caller call() catch error ' + e); + }); + console.log('Caller GetCaller Get ' + caller); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + + } + ``` + + +## Caller.callWithResult + +callWithResult(method: string, data: rpc.Sequenceable): Promise<rpc.MessageParcel>; + +Sends sequenceable data to the target ability and obtains the sequenceable data returned by the target ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | method | string | Yes| Notification message string negotiated between the two abilities. The message is used to instruct the callee to register a function to receive the sequenceable data.| + | data | rpc.Sequenceable | Yes| Sequenceable data. You need to customize the data.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<rpc.MessageParcel> | Promise used to return the sequenceable data from the target ability.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ + constructor(name, str) { + this.name = name; + this.str = str; + } + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + let msg = new MyMessageAble(1, "world"); + caller.callWithResult(method, msg) + .then((data) => { + console.log('Caller callWithResult() called'); + let retmsg = new MyMessageAble(0, ""); + data.readSequenceable(retmsg); + }).catch((e) => { + console.log('Caller callWithResult() catch error ' + e); + }); + console.log('Caller GetCaller Get ' + caller); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + } + ``` + + +## Caller.release + +release(): void; + +Releases the caller interface of the target ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + try { + caller.release(); + } catch (e) { + console.log('Caller Release error ' + e); + } + console.log('Caller GetCaller Get ' + caller); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + } + ``` + + +## Caller.onRelease + +onRelease(callback: OnReleaseCallBack): void; + +Registers a callback that is invoked when the Stub on the target ability is disconnected. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | callback | OnReleaseCallBack | Yes| Callback used for the **onRelease** API.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + var caller; + export default class MainAbility extends Ability { + onWindowStageCreate(windowStage) { + this.context.startAbilityByCall({ + bundleName: "com.example.myservice", + abilityName: "com.example.myservice.MainAbility", + deviceId: "" + }).then((obj) => { + caller = obj; + try { + caller.onRelease((str) => { + console.log(' Caller OnRelease CallBack is called ' + str); + }); + } catch (e) { + console.log('Caller Release error ' + e); + } + console.log('Caller GetCaller Get ' + caller); + }).catch((e) => { + console.log('Caller GetCaller error ' + e); + }); + } + } + ``` + + +## Callee + +Implements callbacks for caller notification registration and unregistration. + + +## Callee.on + +on(method: string, callback: CaleeCallBack): void; + +Registers a caller notification callback, which is invoked when the target ability registers a function. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | method | string | Yes| Notification message string negotiated between the two abilities.| + | callback | CaleeCallBack | Yes| JS notification synchronization callback of the **rpc.MessageParcel** type. The callback must return at least one empty **rpc.Sequenceable** object. Otherwise, the function execution fails.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + class MyMessageAble{ + constructor(name, str) { + this.name = name; + this.str = str; + } + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']'); + return true; + } + }; + var method = 'call_Function'; + function funcCallBack(pdata) { + console.log('Callee funcCallBack is called ' + pdata); + let msg = new MyMessageAble(0, ""); + pdata.readSequenceable(msg); + return new MyMessageAble(10, "Callee test"); + } + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('Callee onCreate is called'); + this.callee.on(method, funcCallBack); + } + } + ``` + + +## Callee.off + +off(method: string): void; + +Unregisters a caller notification callback, which is invoked when the target ability registers a function. + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | method | string | Yes| Registered notification message string.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability'; + var method = 'call_Function'; + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('Callee onCreate is called'); + this.callee.off(method); + } + } + ``` + +## OnReleaseCallBack + +(msg: string): void; + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| (msg: string) | function | Yes| No| Prototype of the listener function interface registered by the caller.| + + + ## CaleeCallBack + +(indata: rpc.MessageParcel): rpc.Sequenceable; + +**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| (indata: rpc.MessageParcel) | rpc.Sequenceable | Yes| No| Prototype of the message listener function interface registered by the callee.| diff --git a/en/application-dev/reference/apis/js-apis-application-abilityConstant.md b/en/application-dev/reference/apis/js-apis-application-abilityConstant.md new file mode 100644 index 0000000000..226288e3cc --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-application-abilityConstant.md @@ -0,0 +1,64 @@ +# AbilityConstant + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Provides parameters related to ability launch. + + +## Modules to Import + + +```js +import AbilityConstant from '@ohos.application.AbilityConstant'; +``` + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| launchReason | LaunchReason| Yes| Yes| Ability launch reason.| +| lastExitReason | LastExitReason | Yes| Yes| Reason for the last exit.| + +## AbilityConstant.LaunchReason + +Enumerates ability launch reasons. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name | Value | Description | +| ----------------------------- | ---- | ------------------------------------------------------------ | +| UNKNOWN | 0 | Unknown reason.| +| START_ABILITY | 1 | Ability startup.| +| CALL | 2 | Call.| +| CONTINUATION | 3 | Ability continuation.| + + +## AbilityConstant.LastExitReason + +Enumerates reasons for the last exit. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name | Value | Description | +| ----------------------------- | ---- | ------------------------------------------------------------ | +| UNKNOWN | 0 | Unknown reason.| +| ABILITY_NOT_RESPONDING | 1 | The ability does not respond.| +| NORMAL | 2 | Normal status.| + + +## AbilityConstant.OnContinueResult + +Enumerates ability continuation results. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name | Value | Description | +| ----------------------------- | ---- | ------------------------------------------------------------ | +| AGREE | 0 | Continuation agreed.| +| REJECT | 1 | Continuation denied.| +| MISMATCH | 2 | Mismatch.| diff --git a/en/application-dev/reference/apis/js-apis-application-abilityMonitor.md b/en/application-dev/reference/apis/js-apis-application-abilityMonitor.md new file mode 100644 index 0000000000..b31687b7ed --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-application-abilityMonitor.md @@ -0,0 +1,28 @@ +# AbilityMonitor + +> **NOTE** +> +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + +## Modules to Import + +```js +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +``` + + + +## AbilityMonitor + +Describes an ability monitor. + +| Name | Type | Readable| Writable| Description | +| ------------------------------------------------------------ | -------- | ---- | ---- | ------------------------------------------------------------ | +| abilityName | string | Yes | Yes | Name of the ability bound to the ability monitor.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onAbilityCreate?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the ability is created.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onAbilityForeground?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the ability starts to run in the foreground.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onAbilityBackground?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the ability starts to run in the background.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onAbilityDestroy?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the ability is destroyed.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onWindowStageCreate?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the window stage is created.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onWindowStageRestore?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the window stage is restored.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| +| onWindowStageDestroy?:(data: [Ability](js-apis-application-ability.md#Ability)) | function | Yes | Yes | Called when the window stage is destroyed.
If this attribute is not set, the corresponding lifecycle callback cannot be received.
**System capability**: SystemCapability.Ability.AbilityRuntime.Core| diff --git a/en/application-dev/reference/apis/js-apis-application-abilitystage.md b/en/application-dev/reference/apis/js-apis-application-abilitystage.md new file mode 100644 index 0000000000..c5183939ca --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-application-abilitystage.md @@ -0,0 +1,101 @@ +# AbilityStage + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Runtime class for HAP files. It provides APIs to notify you when a HAP file starts loading. You can then initialize the HAP file, for example, pre-load resources and create threads. + + +## Modules to Import + + +```js +import AbilityStage from '@ohos.application.AbilityStage'; +``` + +## AbilityStage.onCreate + +onCreate(): void + +Called when the application is created. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + + + +**Example** + + ```js + class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage.onCreate is called") + } + } + ``` + + +## AbilityStage.onAcceptWant + +onAcceptWant(want: Want): string; + +Called when a specified ability is started. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information about the ability to start, such as the ability name and bundle name.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | string | Returns an ability ID. If this ability has been started, no new instance is created and the ability is placed at the top of the stack. Otherwise, a new instance is created and started.| + +**Example** + + ```js + class MyAbilityStage extends AbilityStage { + onAcceptWant(want) { + console.log("MyAbilityStage.onAcceptWant called"); + return "com.example.test"; + } + } + ``` + + +## AbilityStage.onConfigurationUpdated + +onConfigurationUpdated(config: Configuration): void; + +Called when the global configuration is updated. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | config | [Configuration](js-apis-configuration.md) | Yes| Callback invoked when the global configuration is updated. The global configuration indicates the configuration of the environment where the application is running and includes the language and color mode.| + +**Example** + + ```js + class MyAbilityStage extends AbilityStage { + onConfigurationUpdated(config) { + console.log('onConfigurationUpdated, language:' + config.language); + } + } + ``` +## AbilityStage.context + +Describes the configuration information about the context. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name | Type | Description | +| ----------- | --------------------------- | ------------------------------------------------------------ | +| context | [AbilityStageContext](js-apis-featureAbility.md) | Called when initialization is performed during ability startup.| diff --git a/en/application-dev/reference/apis/js-apis-application-context.md b/en/application-dev/reference/apis/js-apis-application-context.md new file mode 100644 index 0000000000..4b58792502 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-application-context.md @@ -0,0 +1,81 @@ +# Context + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Provides the context for running code, including **applicationInfo** and **resourceManager**. + + +## Usage + + +You must extend **AbilityContext** to implement this module. + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + + | Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| resourceManager | ResourceManager | Yes| No| **ResourceManager** object.| +| applicationInfo | ApplicationInfo | Yes| No| Information about the application.| +| cacheDir | string | Yes| No| Cache directory of the application on the internal storage.| +| tempDir | string | Yes| No| Temporary file directory of the application.| +| filesDir | string | Yes| No| File directory of the application on the internal storage.| +| databaseDir | string | Yes| No| Storage directory of local data.| +| storageDir | string | Yes| No| Storage directory of lightweight data.| +| bundleCodeDir | string | Yes| No| Application installation path.| +| distributedFilesDir | string | Yes| No| Storage directory of distributed application data files.| +| eventHub | [EventHub](js-apis-eventhub.md) | Yes| No| Event hub information.| + + +## Context.createBundleContext + +createBundleContext(bundleName: string): Context; + +Creates an application context. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | bundleName | string | Yes| Application bundle name.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Context | Context of the application created.| + +**Example** + + ```js + let test = "com.example.test"; + let context = this.context.createBundleContext(test); + ``` + + +## Context.getApplicationContext + +getApplicationContext(): Context; + +Obtains the context of this application. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Return value** + + | Type| Description| + | -------- | -------- | + | Context | Context obtained.| + +**Example** + + ```js + // This part is mandatory. + let context = this.context.getApplicationContext(); + ``` diff --git a/en/application-dev/reference/apis/js-apis-eventhub.md b/en/application-dev/reference/apis/js-apis-eventhub.md new file mode 100644 index 0000000000..1ee467b32f --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-eventhub.md @@ -0,0 +1,140 @@ +# EventHub + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements event subscription, unsubscription, and triggering. + + +## Usage + + +Before using any APIs in the **EventHub**, you must obtain an **EventHub** instance through the member variable **context** of the **Ability** instance. + + + +```js +import Ability from '@ohos.application.Ability' +export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + } +} +``` + + +## EventHub.on + +on(event: string, callback: Function): void; + +Subscribes to an event. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | event | string | Yes| Event name.| + | callback | Function | Yes| Callback invoked when the event is triggered.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + this.context.eventHub.on("123", () => { + console.log("call anonymous func 1"); + }); + // Result + // func1 is called + // call anonymous func 1 + this.context.eventHub.emit("123"); + } + func1() { + console.log("func1 is called"); + } + } + ``` + + +## EventHub.off + +off(event: string, callback?: Function): void; + +Unsubscribes from an event. If **callback** is specified, this API unsubscribes from the specified callback. If **callback** is not specified, this API unsubscribes from all callbacks in the event. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | event | string | Yes| Event name.| + | callback | Function | No| Callback for the event. If **callback** is unspecified, all callbacks of the event are unsubscribed.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + this.context.eventHub.off("123", this.func1); // Unsubscribe from func1. + this.context.eventHub.on("123", this.func1); + this.context.eventHub.on("123", this.func2); + this.context.eventHub.off("123"); // Unsubscribe from func1 and func2. + } + func1() { + console.log("func1 is called"); + } + func2() { + console.log("func2 is called"); + } + } + ``` + + +## EventHub.emit + +emit(event: string, ...args: Object[]): void; + +Triggers an event. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | event | string | Yes| Event name.| + | ...args | Object[] | Yes| Variable parameters, which are passed to the callback when the event is triggered.| + +**Example** + + ```js + import Ability from '@ohos.application.Ability' + + export default class MainAbility extends Ability { + onForeground() { + this.context.eventHub.on("123", this.func1); + // Result + // func1 is called,undefined,undefined + this.context.eventHub.emit("123"); + // Result + // func1 is called,1,undefined + this.context.eventHub.emit("123", 1); + // Result + // func1 is called,1,2 + this.context.eventHub.emit("123", 1, 2); + } + func1(a, b) { + console.log("func1 is called," + a + "," + b); + } + } + ``` diff --git a/en/application-dev/reference/apis/js-apis-extension-context.md b/en/application-dev/reference/apis/js-apis-extension-context.md new file mode 100644 index 0000000000..3a18f757b3 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-extension-context.md @@ -0,0 +1,16 @@ +# ExtensionContext + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements the extension context. This module is inherited from **Context**. + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| currentHapModuleInfo | HapModuleInfo | Yes| No| Information about the current HAP. | diff --git a/en/application-dev/reference/apis/js-apis-extensionrunninginfo.md b/en/application-dev/reference/apis/js-apis-extensionrunninginfo.md new file mode 100644 index 0000000000..f5f75e537f --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-extensionrunninginfo.md @@ -0,0 +1,57 @@ +# ExtensionRunningInfo + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Provides extension running information. + + +## Usage + + +The extension running information is obtained through an **abilityManager** instance. + + + +``` +import abilitymanager from '@ohos.application.abilityManager'; +abilitymanager.getExtensionRunningInfos(upperLimit, (err,data) => { + console.log("getExtensionRunningInfos err: " + err + " data: " + JSON.stringify(data)); +}); +``` + + +### Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| extension | ElementName | Yes| No| Information that matches an extension.| +| pid | number | Yes| No| Process ID.| +| uid | number | Yes| No| User ID.| +| processName | string | Yes| No| Process name.| +| startTime | number | Yes| No| Extension start time.| +| clientPackage | Array<String> | Yes| No| Names of all packages in the process.| +| type | [bundle.ExtensionAbilityType](#bundleextensionabilitytype) | Yes| No| Extension type.| + + +## bundle.ExtensionAbilityType + +Enumerates extension types. + +**System capability**: SystemCapability.BundleManager.BundleFramework + + | Name| Value| Description| +| -------- | -------- | -------- | +| FORM | 0 | Extension information of the form type.< | +| WORK_SCHEDULER | 1 | Extension information of the work scheduler type.< | +| INPUT_METHOD | 2 | Extension information of the input method type.< | +| SERVICE | 3 | Extension information of the service type.< | +| ACCESSIBILITY | 4 | Extension information of the accessibility type.< | +| DATA_SHARE | 5 | Extension information of the data share type.< | +| FILE_SHARE | 6 | Extension information of the file share type.< | +| STATIC_SUBSCRIBER | 7 | Extension information of the static subscriber type.< | +| WALLPAPER | 8 | Extension information of the wallpaper type.< | +| UNSPECIFIED | 9 | Extension information of the unspecified type.< | diff --git a/en/application-dev/reference/apis/js-apis-formextension.md b/en/application-dev/reference/apis/js-apis-formextension.md new file mode 100644 index 0000000000..f7302bbc65 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-formextension.md @@ -0,0 +1,221 @@ +# FormExtension + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + +Provides **FormExtension** APIs. + +## Modules to Import + +``` +import FormExtension from '@ohos.application.FormExtension'; +``` + +## Required Permissions + +None + +## Attributes + +**System capability**: SystemCapability.Ability.Form + +| Name | Type | Readable| Writable| Description | +| ------- | ------------------------------------------------------- | ---- | ---- | --------------------------------------------------- | +| context | [FormExtensionContext](js-apis-formextensioncontext.md) | Yes | No | Context of the **FormExtension**. This class is inherited from **ExtensionContext**.| + +## onCreate + +onCreate(want: Want): formBindingData.FormBindingData + +Called to notify the widget provider that a **Form** instance (widget) has been created. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name| Type | Mandatory| Description | + | ------ | -------------------------------------- | ---- | ------------------------------------------------------------ | + | want | [Want](js-apis-featureAbility.md#want) | Yes | Information related to the extension, including the widget ID, name, and style. The information must be managed as persistent data to facilitate subsequent widget update and deletion.| + +**Return value** + + | Type | Description | + | ------------------------------------------------------------ | ----------------------------------------------------------- | + | [formBindingData.FormBindingData](js-apis-formbindingdata.md#formbindingdata) | A **formBindingData.FormBindingData** object containing the data to be displayed on the widget.| + +**Example** + + ```js + export default class MyFormExtension extends FormExtension { + onCreate(want) { + console.log('FormExtension onCreate, want:' + want.abilityName); + let dataObj1 = { + temperature:"11c", + "time":"11:00" + }; + let obj1 = formBindingData.createFormBindingData(dataObj1); + return obj1; + } + } + ``` + +## FormExtension.onCastToNormal + +onCastToNormal(formId: string): void + +Called to notify the widget provider that a temporary widget has been converted to a normal one. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name| Type | Mandatory| Description | + | ------ | ------ | ---- | ------------------------ | + | formId | string | Yes | ID of the widget that requests to be converted to a normal one.| + +**Example** + + ``` + export default class MyFormExtension extends FormExtension { + onCastToNormal(formId) { + console.log('FormExtension onCastToNormal, formId:' + formId); + } + } + ``` + +## FormExtension.onUpdate + +onUpdate(formId: string): void + +Called to notify the widget provider that a widget has been updated. After obtaining the latest data, the caller invokes **updateForm** of the [FormExtensionContext](js-apis-formextensioncontext.md) class to update the widget data. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name| Type | Mandatory| Description | + | ------ | ------ | ---- | ------------------ | + | formId | string | Yes | ID of the widget that requests to be updated.| + +**Example** + + ```js + export default class MyFormExtension extends FormExtension { + onUpdate(formId) { + console.log('FormExtension onUpdate, formId:' + formId); + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + this.context.updateForm(formId, obj2) + .then((data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }).catch((error) => { + console.error('Operation updateForm failed. Cause: ' + error);}); + } + } + ``` + +## FormExtension.onVisibilityChange + +onVisibilityChange(newStatus: { [key: string]: number }): void + +Called to notify the widget provider of the change of visibility. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name | Type | Mandatory| Description | + | --------- | ------------------------- | ---- | ---------------------------- | + | newStatus | { [key: string]: number } | Yes | ID and visibility status of the widget to be changed.| + +**Example** + + ```js + export default class MyFormExtension extends FormExtension { + onVisibilityChange(newStatus) { + console.log('FormExtension onVisibilityChange, newStatus:' + newStatus); + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + + for (let key in newStatus) { + console.log('FormExtension onVisibilityChange, key:' + key + ", value=" + newStatus[key]); + this.context.updateForm(key, obj2) + .then((data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }).catch((error) => { + console.error('Operation updateForm failed. Cause: ' + error);}); + } + } + } + ``` + +## FormExtension.onEvent + +onEvent(formId: string, message: string): void + +Called to instruct the widget provider to receive and process the widget event. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name | Type | Mandatory| Description | + | ------- | ------ | ---- | ---------------------- | + | formId | string | Yes | ID of the widget that requests the event.| + | message | string | Yes | Event message. | + +**Example** + + ```js + export default class MyFormExtension extends FormExtension { + onEvent(formId, message) { + console.log('FormExtension onEvent, formId:' + formId + ", message:" + message); + } + } + ``` + +## FormExtension.onDestroy + +onDestroy(formId: string): void + +Called to notify the widget provider that a **Form** instance (widget) has been destroyed. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name| Type | Mandatory| Description | + | ------ | ------ | ---- | ------------------ | + | formId | string | Yes | ID of the widget to be destroyed.| + +**Example** + + ```js + export default class MyFormExtension extends FormExtension { + onDestroy(formId) { + console.log('FormExtension onDestroy, formId:' + formId); + } + } + ``` + +## FormExtension.onConfigurationUpdated + +onConfigurationUpdated(config: Configuration): void; + +Called when the configuration of the environment where the ability is running is updated. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | config | [Configuration](#section188911144124715) | Yes| New configuration.| + +**Example** + + ```js + class MyFormExtension extends MyFormExtension { + onConfigurationUpdated(config) { + console.log('onConfigurationUpdated, config:' + JSON.stringify(config)); + } + } + ``` diff --git a/en/application-dev/reference/apis/js-apis-formextensioncontext.md b/en/application-dev/reference/apis/js-apis-formextensioncontext.md new file mode 100644 index 0000000000..faa3bd6c6f --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-formextensioncontext.md @@ -0,0 +1,63 @@ +# FormExtensionContext + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. + +Implements the context that provides the capabilities and APIs of **FormExtension**. This class is inherited from **ExtensionContext**. + +## FormExtensionContext.updateForm + +updateForm(formId: string, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback\): void + +Updates a widget. This method uses a callback to return the result. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name | Type | Mandatory| Description | + | --------------- | ------------------------------------------------------------ | ---- | -------------------------------------- | + | formId | string | Yes | ID of the widget that requests to be updated. | + | formBindingData | [formBindingData.FormBindingData](js-apis-formbindingdata.md#formbindingdata) | Yes | New data of the widget. | + | callback | AsyncCallback\ | Yes | Callback used to return the result indicating whether the method is successfully called.| + +**Example** + + ```js + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + this.context.updateForm(formId, obj2, (data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }); + ``` + +## FormExtensionContext.updateForm + +updateForm(formId: string, formBindingData: formBindingData.FormBindingData): Promise\ + +Updates a widget. This method uses a promise to return the result. + +**System capability**: SystemCapability.Ability.Form + +**Parameters** + + | Name | Type | Mandatory| Description | + | --------------- | ------------------------------------------------------------ | ---- | ------------------ | + | formId | string | Yes | ID of the widget that requests to be updated.| + | formBindingData | [formBindingData.FormBindingData](js-apis-formbindingdata.md#formbindingdata) | Yes | New data of the widget. | + +**Return value** + + | Type | Description | + | -------------- | --------------------------------- | + | Promise\ | Promise returned with the result indicating whether the method is successfully called.| + +**Example** + + ``` + let obj2 = formBindingData.createFormBindingData({temperature:"22c", time:"22:00"}); + this.context.updateForm(formId, obj2) + .then((data)=>{ + console.log('FormExtension context updateForm, data:' + data); + }).catch((error) => { + console.error('Operation updateForm failed. Cause: ' + error);}); + ``` diff --git a/en/application-dev/reference/apis/js-apis-permissionrequestresult.md b/en/application-dev/reference/apis/js-apis-permissionrequestresult.md new file mode 100644 index 0000000000..20f6b78599 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-permissionrequestresult.md @@ -0,0 +1,17 @@ +# PermissionRequestResult + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Provides the permission request result. + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + + | Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| permissions | Array<string> | Yes| No| Permissions requested.| +| authResults | Array<number> | Yes| No| Whether the requested permissions are granted or denied. The value **0** means that the requests permissions are granted, and **-1** means the opposite. | diff --git a/en/application-dev/reference/apis/js-apis-service-extension-ability.md b/en/application-dev/reference/apis/js-apis-service-extension-ability.md new file mode 100644 index 0000000000..bb0dd56910 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-service-extension-ability.md @@ -0,0 +1,163 @@ +# ServiceExtensionAbility + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Provides APIs related to **ServiceExtension**. + + +## Modules to Import + +``` +import ServiceExtension from '@ohos.application.ServiceExtensionAbility'; +``` + + +## Required Permissions + +None. + + +## Attributes + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Type| Readable| Writable| Description| +| -------- | -------- | -------- | -------- | -------- | +| context | [ServiceExtensionContext](js-apis-service-extension-context.md) | Yes| No| Service extension context, which is inherited from **ExtensionContext**.| + + +## ServiceExtensionAbility.onCreate + +onCreate(want: Want): void; + +Called when an extension is created to initialize the service logic. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information related to this extension, including the ability name and bundle name.| + +**Example** + + ```js + class ServiceExt extends ServiceExtension { + onCreate(want) { + console.log('onCreate, want:' + want.abilityName); + } + } + ``` + + +## ServiceExtensionAbility.onDestroy + +onDestroy(): void; + +Called when this extension is destroyed to clear resources. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Example** + + ```js + class ServiceExt extends ServiceExtension { + onDestroy() { + console.log('onDestroy'); + } + } + ``` + + +## ServiceExtensionAbility.onRequest + +onRequest(want: Want, startId: number): void; + +Called after **onCreate** is invoked when an ability is started by calling **startAbility**. The value of **startId** is incremented for each ability that is started. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information related to this extension, including the ability name and bundle name.| + | startId | number | Yes| Number of ability start times. The initial value is **1**, and the value is automatically incremented for each ability started.| + +**Example** + + ```js + class ServiceExt extends ServiceExtension { + onRequest(want, startId) { + console.log('onRequest, want:' + want.abilityName); + } + } + ``` + + +## ServiceExtensionAbility.onConnect + +onConnect(want: Want): rpc.RemoteObject; + +Called after **onCreate** is invoked when an ability is started by calling **connectAbility**. A **RemoteObject** object is returned for communication with the client. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want)| Yes| Information related to this extension, including the ability name and bundle name.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | rpc.RemoteObject | A **RemoteObject** object used for communication with the client.| + +**Example** + + ```js + import rpc from '@ohos.rpc' + class StubTest extends rpc.RemoteObject{ + constructor(des) { + super(des); + } + onRemoteRequest(code, data, reply, option) { + } + } + class ServiceExt extends ServiceExtension { + onConnect(want) { + console.log('onConnect , want:' + want.abilityName); + return new StubTest("test"); + } + } + ``` + + +## ServiceExtensionAbility.onDisconnect + +onDisconnect(want: Want): void; + +Called when the ability is disconnected. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want |[Want](js-apis-featureAbility.md#Want)| Yes| Information related to this extension, including the ability name and bundle name.| + +**Example** + + ```js + class ServiceExt extends ServiceExtension { + onDisconnect(want) { + console.log('onDisconnect, want:' + want.abilityName); + } + } + ``` diff --git a/en/application-dev/reference/apis/js-apis-service-extension-context.md b/en/application-dev/reference/apis/js-apis-service-extension-context.md new file mode 100644 index 0000000000..0c6b7c6749 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-service-extension-context.md @@ -0,0 +1,223 @@ +# ServiceExtensionContext + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements the context that provides the capabilities and APIs of **ServiceExtension**. This class is inherited from **ExtensionContext**. + + +## startAbility + +startAbility(want: Want, callback: AsyncCallback<void>): void; + +Starts an ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want) | Yes| Information about the ability to start, such as the ability name and bundle name.| + | callback | AsyncCallback<void> | No| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + let want = { + "bundleName": "com.example.myapp", + "abilityName": "com.example.myapp.MyAbility" + }; + this.context.startAbility(want, (err) => { + console.log('startAbility result:' + JSON.stringfy(err)); + }); + ``` + + +## ServiceExtensionContext.startAbility + +startAbility(want: Want): Promise<void>; + +Starts an ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want) | Yes| Information about the ability to start, such as the ability name and bundle name.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + let want = { + "bundleName": "com.example.myapp", + "abilityName": "com.example.myapp.MyAbility" + }; + this.context.startAbility(want).then((data) => { + console.log('success:' + JSON.stringfy(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` + + +## ServiceExtensionContext.terminateSelf + +terminateSelf(callback: AsyncCallback<void>): void; + +Terminates this ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | callback | AsyncCallback<void> | No| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.terminateSelf((err) => { + console.log('terminateSelf result:' + JSON.stringfy(err)); + }); + ``` + + +## ServiceExtensionContext.terminateSelf + +terminateSelf(): Promise<void>; + +Terminates this ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.terminateSelf(want).then((data) => { + console.log('success:' + JSON.stringfy(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` + + +## ServiceExtensionContext.connectAbility + +connectAbility(want: Want, options: ConnectOptions): number; + +Connects this ability to a Service ability. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | want | [Want](js-apis-featureAbility.md#Want) | Yes| Information about the ability to connect to, such as the ability name and bundle name.| + | options | [ConnectOptions](#connectoptions) | Yes| Callback used to return the information indicating that the connection is successful, interrupted, or failed.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | number | A number, based on which the connection will be interrupted.| + +**Example** + + ```js + let want = { + "bundleName": "com.example.myapp", + "abilityName": "com.example.myapp.MyAbility" + }; + let options = { + onConnect: function(elementName, proxy) {}, + onDisConnect: function(elementName) {}, + onFailed: function(code) {} + } + let connection = this.context.connectAbility(want,options); + ``` + + +## ServiceExtensionContext.disconnectAbility + +disconnectAbility(connection: number, callback:AsyncCallback<void>): void; + +Disconnects this ability from the Service ability. This API uses a callback to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | connection | number | Yes| Number returned after **connectAbility** is called.| + | callback | AsyncCallback<void> | No| Callback used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.disconnectAbility(connection, (err) => { // connection is the return value of connectAbility. + console.log('terminateSelf result:' + JSON.stringfy(err)); + }); + ``` + + +## ServiceExtensionContext.disconnectAbility + +disconnectAbility(connection: number): Promise<void>; + +Disconnects this ability from the Service ability. This API uses a promise to return the result. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | connection | number | Yes| Number returned after **connectAbility** is called.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<void> | Promise used to return the result indicating whether the API is successfully called.| + +**Example** + + ```js + this.context.disconnectAbility(connection).then((data) => { // connection is the return value of connectAbility. + console.log('success:' + JSON.stringfy(data)); + }).catch((error) => { + console.log('failed:' + JSON.stringfy(error)); + }); + ``` + + +## ConnectOptions + +Defines the **ConnectOptions** data structure. + +**System capability**: SystemCapability.Ability.AbilityRuntime.Core + +| Name| Description| +| -------- | -------- | +| onConnect(elementName:ElementName, remote:IRemoteObject) | Called when this ability is connected to a Service ability.| +| onDisconnect(elementName:ElementName) | Called when the peer service is abnormal or killed.| +| onFailed(code: number) | Called when the connection fails.| diff --git a/en/application-dev/reference/apis/js-apis-uripermissionmanager.md b/en/application-dev/reference/apis/js-apis-uripermissionmanager.md new file mode 100644 index 0000000000..1a0c320f80 --- /dev/null +++ b/en/application-dev/reference/apis/js-apis-uripermissionmanager.md @@ -0,0 +1,81 @@ +# uriPermissionManager + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** +> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. + + +Implements URI permission management. + + +## Modules to Import + + +``` +import uriPermissionManager from '@ohos.application.uriPermissionManager'; +``` + + +## uriPermissionManager.verifyUriPermission + +verifyUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number, callback: AsyncCallback<number>): void + +Checks whether an application has the permission specified by **flag** for an URI. This API uses a callback to return the result. + +**System capability**: + +SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | uri | string | Yes| URI of a file, for example, **fileshare:///com.samples.filesharetest.FileShare/person/10**.| + | flag | wantConstant.Flags | Yes| Read or write permission on the file specified by the URI.| + | accessTokenId | number | Yes| Unique ID of an application, which is obtained through the **BundleManager** API.| + | callback | AsyncCallback<number> | Yes| Callback used to return the check result. The value **0** means that the application has the specified permission, and **-1** means the opposite.| + +**Example** + + ``` + let uri = "fileshare:///com.samples.filesharetest.FileShare/person/10" + UriPermissionManager.verifyUriPermission(uri, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, accessTokenId, (result) => { + console.log("result.code = " + result.code) + }) // accessTokenId is obtained through the **BundleManager** API. + ``` + + +## uriPermissionManager.verifyUriPermission + +verifyUriPermission(uri: string, flag: wantConstant.Flags, accessTokenId: number): Promise<number> + +Checks whether an application has the permission specified by **flag** for an URI. This API uses a promise to return the result. + +**System capability**: + +SystemCapability.Ability.AbilityRuntime.Core + +**Parameters** + + | Name| Type| Mandatory| Description| + | -------- | -------- | -------- | -------- | + | uri | string | Yes| URI of a file, for example, **fileshare:///com.samples.filesharetest.FileShare/person/10**.| + | flag | wantConstant.Flags | Yes| Read or write permission on the file specified by the URI.| + | accessTokenId | number | Yes| Unique ID of an application, which is obtained through the **BundleManager** API.| + +**Return value** + + | Type| Description| + | -------- | -------- | + | Promise<number> | Promise used to return the check result. The value **0** means that the application has the specified permission, and **-1** means the opposite.| + +**Example** + + ``` + let uri = "fileshare:///com.samples.filesharetest.FileShare/person/10" + UriPermissionManager.verifyUriPermission(uri, wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, accessTokenId) + .then((data) => { + console.log('Verification succeeded.' + data) + }).catch((error) => { + console.log('Verification failed.'); + }) + ``` diff --git a/zh-cn/application-dev/ability/Readme-CN.md b/zh-cn/application-dev/ability/Readme-CN.md index cf4dd4d97b..1cc9425d38 100644 --- a/zh-cn/application-dev/ability/Readme-CN.md +++ b/zh-cn/application-dev/ability/Readme-CN.md @@ -1,10 +1,19 @@ # Ability开发 -- [FA模型综述](fa-brief.md) -- [PageAbility开发指导](fa-pageability.md) -- [ServiceAbility开发指导](fa-serviceability.md) -- [DataAbility开发指导](fa-dataability.md) -- [FA卡片开发指导](fa-formability.md) -- 其他 - - [WantAgent开发指导](wantagent.md) - - [Ability助手使用指导](ability-assistant-guidelines.md) - - [测试框架使用指导](ability-delegator.md) + - [Ability框架概述](ability-brief.md) + - FA模型 + - [FA模型综述](fa-brief.md) + - [PageAbility开发指导](fa-pageability.md) + - [ServiceAbility开发指导](fa-serviceability.md) + - [DataAbility开发指导](fa-dataability.md) + - [FA卡片开发指导](fa-formability.md) + - Stage模型 + - [Stage模型综述](stage-brief.md) + - [Ability开发指导](stage-ability.md) + - [ServiceExtensionAbility开发指导](stage-serviceextension.md) + - [跨端迁移开发指导](stage-ability-continuation.md) + - [Call调用开发指导](stage-call.md) + - [Stage卡片开发指导](stage-formextension.md) + - 其他 + - [WantAgent开发指导](wantagent.md) + - [Ability助手使用指导](ability-assistant-guidelines.md) + - [测试框架使用指导](ability-delegator.md) diff --git a/zh-cn/application-dev/ability/ability-brief.md b/zh-cn/application-dev/ability/ability-brief.md new file mode 100644 index 0000000000..4d50fe1fed --- /dev/null +++ b/zh-cn/application-dev/ability/ability-brief.md @@ -0,0 +1,34 @@ +# Ability框架概述 + +​ Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。 + +​ Ability框架模型结构具有两种框架形态: + +- 第一种形态为FA模型。API 8及其更早版本的应用程序只能使用FA模型进行开发。 FA模型将Ability分为FA(Feature Ability)和PA(Particle Ability)两种类型,其中FA支持Page Ability,PA支持Service Ability、Data Ability、以及FormAbility。 +- 第二种形态为Stage模型。从API 9开始,Ability框架引入了Stage模型作为第二种应用框架形态,Stage模型将Ability分为Ability和ExtensionAbility两大类,其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等等一系列ExtensionAbility,以便满足更多的使用场景。 + +​ Stage模型的设计,主要是为了方便开发者更加方便地开发出分布式环境下的复杂应用。下表给出了两种模型在设计上的差异: + +| 对比 | FA模型 | Stage模型 | +| -------------- | ------------------------------------------------------------ | -------------------------------------------------------- | +| 开发方式 | 提供类Web的 api,UI开发与Stage模型一致。 | 提供面向对象的开发方式,UI开发与FA模型一致。 | +| 引擎实例 | 每个进程内的每个Ability独享一个JS VM引擎实例。 | 每个进程内的多个Ability实例共享一个JS VM引擎实例。 | +| 进程内对象共享 | 不支持。 | 支持。 | +| 包描述文件 | 使用config.json描述HAP包和组件信息,组件必须使用固定的文件名。 | 使用module.json描述HAP包和组件信息,可以指定入口文件名。 | +| 组件 | 提供PageAbility(页面展示),ServiceAbility(服务),DataAbility(数据分享), FormAbility(卡片)。 | 提供Ability(页面展示)、Extension(基于场景的服务扩展)。 | + +​ 除了上述设计上的差异外,对于开发者而言,两种模型的主要区别在于: + +* Ability类型存在差异; + + ![favsstage](figures/favsstage.png) + +* Ability生命周期存在差异; + + ![lifecycle](figures/lifecycle.png) + + +两种模型的基本介绍,详见[FA模型综述](fa-brief.md)及[Stage模型综述](stage-brief.md)。 +## 相关实例 +针对Ability开发,有以下相关实例可供参考: +- [Page内和Page间导航跳转](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility) \ No newline at end of file diff --git a/zh-cn/application-dev/ability/ability-delegator.md b/zh-cn/application-dev/ability/ability-delegator.md index 3a470e83df..b4d22a99a6 100755 --- a/zh-cn/application-dev/ability/ability-delegator.md +++ b/zh-cn/application-dev/ability/ability-delegator.md @@ -22,20 +22,23 @@ Delegator测试框架是OpenHarmony提供的一套开发者应用自测试框架 **FA模型:** ```javascript -aa test -p com.example.myapplicationfaets -s unittest OpenHarmonyTestRunner -s class ActsAbilityTest -w 20 +aa test -b BundleName -p com.example.myapplicationfaets -s unittest OpenHarmonyTestRunner -s class ActsAbilityTest -w 20 ``` **Stage模型:** ```javascript -aa test -m com.example.myapplicationfaets -s unittest OpenHarmonyTestRunner -s class ActsAbilityTest -w 20 +aa test -b BundleName -m com.example.myapplicationfaets -s unittest OpenHarmonyTestRunner -s class ActsAbilityTest -w 20 ``` | 参数 | 是否必选 | 参数说明 | | --------------- | -------- | ------------------------------------------------------------ | +| -b | 是 | TestRunner所在hap包的bundle name。 | | -p | 是 | TestRunner所在hap包的package name,FA模型使用。 | -| -m | 是 | TestRunner所在hap包的module name,stage模型使用。 | +| -m | 是 | TestRunner所在hap包的module name,Stage模型使用。 | | -s unittest | 是 | 启用的TestRunner名称,TestRunner名称和文件名需要保持一致。 | -| -w | 否 | 测试用例超时时间,单位为秒,如果未指定,测试框架会一直等待测试代码调用finishTest才退出。 | -| -s | 否 | 支持以key-value的方式输入任何参数,输入的参数可通过AbilityDelegatorArgs.parameters以key-value的方式获取。示例:-s classname myTest,key为classname,value为myTest。 | +| -w | 否 | 测试用例超时时间,单位为秒,如果未指定或指定小于等于0的整数,测试框架会一直等待测试代码调用finishTest才退出。 | +| -s \\ | 否 | 支持以key-value的方式输入任何参数,输入的参数可通过AbilityDelegatorArgs.parameters以key-value的方式获取。示例:-s classname myTest,key为"-s classname",value为"myTest"。 | +| -D | 否 | 以Debug模式启动被测试应用。 | +| -h | 否 | 输出帮助信息。 | ### IDE启动 @@ -45,6 +48,14 @@ IDE启动相关介绍见 [IDE指导网址](https://developer.harmonyos.com/cn/do TestRunner是测试框架测试流程入口类,当测试流程启动时,系统会调用TestRunner内相关接口,开发者需要派生该类,并重写onPrepare、onRun方法。IDE在创建应用模板时会初始化一个默认TestRunner,并在onRun方法启动默认的TestAbility。开发者也可以修改TestAbility测试代码内容,也可以修改默认的TestRunner内onPrepare、onRun方法,自行实现测试代码。具体详细内容请参考TestRunnerAPI接口说明[TestRunner](../reference/apis/js-apis-testRunner.md)。 +## AbilityDelegatorRegistry介绍 + +AbilityDelegatorRegistry是测试框架提供的AbilityDelegator仓库类,开发者可以使用AbilityDelegatorRegistry获取AbilityDelegator实例以及执行此次测试时传入和生成的相关参数AbilityDelegatorArgs。开发者可以使用AbilityDelegator调用测试框架提供的函数集进行测试验证。具体详细内容请参考AbilityDelegatorRegistry API接口说明[AbilityDelegatorRegistry](../reference/apis/js-apis-abilityDelegatorRegistry.md)。 + +## AbilityDelegatorArgs介绍 + +AbilityDelegatorArgs是测试框架提供的测试参数类,开发者可以使用AbilityDelegatorArgs获取执行此次测试时传入和生成的相关参数。具体详细内容请参考AbilityDelegatorArgs API接口说明[AbilityDelegatorArgs](../reference/apis/js-apis-application-abilityDelegatorArgs.md)。 + ## AbilityMonitor介绍 AbilityMonitor是测试框架提供用来绑定并监听Ability类,开发者可以使用AbilityMonitor绑定Ability,并将AbilityMonitor添加到监听列表。绑定后Ability的创建、生命周期变化等会触发AbilityMonitor内相关回调函数,开发者可以在对应回调函数内进行测试验证。具体详细内容请参考AbilityMonitor API接口说明[AbilityMonitor](../reference/apis/js-apis-application-abilityMonitor.md)。 @@ -54,7 +65,7 @@ AbilityMonitor是测试框架提供用来绑定并监听Ability类,开发者 ```javascript import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' -function onAbilityCreateCallback() { +function onAbilityCreateCallback(data) { console.info("onAbilityCreateCallback"); } @@ -64,7 +75,7 @@ var monitor = { } var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); -abilityDelegator.addAbilityMonitor(monitor).then((void) => { +abilityDelegator.addAbilityMonitor(monitor).then(() => { console.info("addAbilityMonitor promise"); }); ``` @@ -94,7 +105,7 @@ var abilityDelegator; var ability; var timeout = 100; -function onAbilityCreateCallback() { +function onAbilityCreateCallback(data) { console.info("onAbilityCreateCallback"); } @@ -113,8 +124,6 @@ var want = { bundleName: "bundleName", abilityName: "abilityName" }; - -abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); abilityDelegator.startAbility(want, (err, data) => { console.info("startAbility callback"); }); @@ -122,7 +131,7 @@ abilityDelegator.startAbility(want, (err, data) => { ### 调度Ability生命周期 -AbilityDelegator提供对Ability生命周期进行显示调度,支持Foreground、Background,配合AbilityMonitor中对Ability生命周期监听方法,可以完整的测试Ability生命周期变化。具体详细内容请参考AbilityDelegator API接口说明[AbilityDelegator](../reference/apis/js-apis-application-abilityDelegator.md)。 +AbilityDelegator提供对Ability生命周期进行显示调度的能力,支持Foreground、Background,配合AbilityMonitor中对Ability生命周期监听方法,可以完整的测试Ability生命周期变化。具体详细内容请参考AbilityDelegator API接口说明[AbilityDelegator](../reference/apis/js-apis-application-abilityDelegator.md)。 ### 执行shellCMD命令 @@ -130,10 +139,40 @@ AbilityDelegator提供执行shellCMD命令功能,开发者可以在测试代 **示例:** ```javascript - var abilityDelegator; - var cmd = "cmd"; - abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); - abilityDelegator.executeShellCommand(cmd, (err,data) => { +var abilityDelegator; +var cmd = "cmd"; +abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); +abilityDelegator.executeShellCommand(cmd, (err, data) => { console.info("executeShellCommand callback"); - }); +}); +``` + +### 打印日志信息 + +AbilityDelegator提供打印日志信息功能,开发者可以在测试代码中输出过程日志信息到终端控制台。 +**示例:** + +```javascript +var abilityDelegator; +var msg = "msg"; + +abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); +abilityDelegator.print(msg, (err) => { + console.info("print callback"); +}); +``` + +### 结束测试并打印日志信息 + +AbilityDelegator提供主动结束测试的功能,开发者可以在测试代码中主动结束测试过程并输出日志码及信息到终端控制台。 +**示例:** + +```javascript +var abilityDelegator; +var msg = "msg"; + +abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); +abilityDelegator.finishTest(msg, 0, (err) => { + console.info("finishTest callback"); +}); ``` \ No newline at end of file diff --git a/zh-cn/application-dev/ability/context-userguide.md b/zh-cn/application-dev/ability/context-userguide.md new file mode 100644 index 0000000000..f5472f3e54 --- /dev/null +++ b/zh-cn/application-dev/ability/context-userguide.md @@ -0,0 +1,238 @@ +# 应用上下文使用指导 + +## Context概述 +​ context是应用中对象的上下文,提供获取应用程序环境信息的能力。 + +## Context整体结构介绍 + +​ OpenHarmony的应用框架分为FA模型和Stage两种模型。对应存在两套Context机制适配两种应用框架模型: + +​ **application/BaseContext** 属于一个通用的Context基类,既不属于FA模型也不属于Stage模型,里面只有一个属性stageMode,用来区分开发模型是FA还是Stage。 + +​ **FA模型** 只有app/Context中的方法属于FA模型对应的Context。该模式下,应用级别的Context和Ability级别的Context都是该类型的实例,如果在应用级别的Context里面调用了Ability级别的方法,会产生错误。所以开发者需要注意context实例所代表的实际含义。 + +​ **Stage模型** 除了app/Context之外的Context都属于Stage模型,分别有application/Context、application/AbilityStageContext、application/ExtensionContext、application/AbilityContext、application/FormExtensionContext和application/ServiceExtensionContext六种Context。这些Context的介绍及使用方式将会在[Stage模型和Context详细介绍](#stage模型和context详细介绍)种进行说明。 + + +![contextIntroduction](figures/contextIntroduction.png) + +## FA模型的Context详细介绍 + +​ 只有app/Context中的方法属于FA模型对应的Context。 + +​ FA模型只有一个Context定义。Context中所有的功能都是通过方法来提供的,它提供了一些featureAbility中不存在的方法,相当于featureAbility的一个扩展和补全。 + +​ d.ts文件如下: + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/app/context.d.ts + +​ 应用的使用方式: + +```javascript +// 1.引入featureAbility +import featureAbility from '@ohos.ability.featureAbility' + +export default { + onCreate() { + console.log('Application onCreate') + + // 2.获取Context + let context = featureAbility.getContext(); + + // 3.调用对应的方法 + context.setShowOnLockScreen(false, (data) => { + console.log("data: " + JSON.stringify(data)); + }); + }, + onActive() { + console.log('Application onActive') + }, + onDestroy() { + console.log('Application onDestroy') + }, +} +``` + +## Stage模型和Context详细介绍 + +​ Stage模型有6大Context: + +### application/Context + +**概述** + +​ application/Context类型的Context是基类Context,里面提供了应用的一些基础信息:resourceManager、applicationInfo、cacheDir等,还有应用的一些基本方法:createBundleContext、switchArea等。应用级别的Context也是application/Context这种类型。 + +**获取方法** + +​ 需要在AbilityStage、Ability、Extension等组件中通过context.getApplicationContext()拿到。 + +**示例** + +```javascript +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('MainAbility onCreate is called' + want + launchParam); + // 获取ApplicationContext + let appContext = this.context.getApplicationContext(); + // 获取路径 + console.log('filesDir is ' + appContext.filesDir); + } + + onDestroy() { + console.log('MainAbility onDestroy is called'); + } +} +``` + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/Context.d.ts + +### application/AbilityStageContext + +​ **概述** + +​ application/AbilityStageContext是Hap包级别的Context。和基类Context相比,Hap包级别的Context中多了HapModuleInfo和Configuration两个信息。 + +**获取方法** + +​ 可以直接在AbilityStage中通过context属性拿到。 + +**示例** + +```javascript +export default class MyAbilityStage extends AbilityStage { + onCreate() { + // 属性context就是AbilityStageContext类型的 + console.log('HapModuleInfo is ' + context.currentHapModuleInfo); + } +} +``` + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/AbilityStageContext.d.ts + +### application/AbilityContext + +​ **概述** + +​ Stage模型下,每个Ability中都包含了一个Context属性。 + +​ Ability功能主要是处理生命周期,其余操作Ability的方法(如startAbility、connectAbility等)都是在AbilityContext中实现的。 + +**获取方法** + +​ 在Ability中通过context属性拿到。 + +**示例** + +```javascript +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log('MainAbility onCreate is called' + want + launchParam); + var want = { + "bundleName": "com.example.MyApplication", + "abilityName": "ServiceExtAbility", + } + // 1.这里的Context就是AbilityContext + let contxt = this.context; + // 2.startAbility + contxt.startAbility(want).then((data) => { + console.info("startAbility success:" + JSON.stringify(data)); + }).catch((error) => { + console.error("startAbility failed:" + JSON.stringify(error)); + }); + } + + onDestroy() { + console.log("MainAbility on Destroy is called"); + } +} +``` + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/AbilityContext.d.ts + +### application/ExtensionContext + +​ **概述** + +​ 和FA模型不同的是,Stage模型把Service从Ability中剥离出来,单独定义了一组通用扩展类Extension用来处理等同的功能。Extension是一个基类,不承担具体业务功能。业务方根据自己的需要去扩展对应的Extension,例如:ServiceAbility扩展为了ServiceExtensionAbility,卡片扩展为了FormExtension。 + +​ 因此新增了一种和Extension匹配的ExtensionContext。ExtensionContext中包含HapModuleInfo和Configuration两个属性。 + +**获取方法** + +​ 不会单独使用。 + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/ExtensionContext.d.ts + +### application/ServiceExtensionContext + +​ **概述** + +​ ServiceExtensionAbility类似于FA模型的ServiceAbility,里面只有生命周期回调相关的处理。 + +​ 操作ServiceExtensionAbility的方法移动到了ServiceExtensionContext中(如startAbility、connectAbility等)。 + +**获取方法** + +​ ServiceExtensionAbility中通过context属性获取。 + +**示例** +```javascript +export default class ServiceExtAbility extends ServiceExtensionAbility { + onCreate(want) { + console.info("ServiceAbility onCreate**"); + // 1.这里的Context就是ServiceExtensionContext + let contxt = this.context; + } + + onRequest(want, startId) { + console.info("ServiceAbility onRequest**"); + } + + onConnect(want) { + console.info("ServiceAbility onConnect**"); + return new StubTest("test"); + } + + onDisconnect(want) { + console.info("ServiceAbility onDisconnect**"); + } + + onDestroy() { + console.info("ServiceAbility onDestroy**"); + } +} + +``` + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/ServiceExtensionContext.d.ts + +### application/FormExtensionContext + +​ [FormExtensionContext](/zh-cn/application-dev/reference/apis/js-apis-formextensioncontext.md) + +**d.ts声明** + +​ https://gitee.com/openharmony/interface_sdk-js/blob/master/api/application/FormExtensionContext.d.ts + +## 常见问题 + +**通过globalThis去获取Context** + +**结论** + +​ FA模型可以通过该方式去获取;Stage模型不可通过该方式去获取,要通过对应组件的属性去获取。 + +**原因** + +​ 应用框架在API8上推出了新的应用模型(Stage模型)。在老的模型(FA模型)下,每个Ability实例有一个js虚拟机实例,所以可以从js引擎的global对象上,获取到一个全局的Ability实例,但是在新的模型(Stage模型)下,整个应用进程共用一个js虚拟机实例,其中可以运行多个Ability实例,这样就不存在一个全局的Ability实例。如果开发者在新的模型(Stage模型)下,调用的API实现仍然走到了获取全局Ability实例的方法,就可能会发生错误或者崩溃。 \ No newline at end of file diff --git a/zh-cn/application-dev/ability/fa-brief.md b/zh-cn/application-dev/ability/fa-brief.md index fbdbde5021..c3c89aee8e 100644 --- a/zh-cn/application-dev/ability/fa-brief.md +++ b/zh-cn/application-dev/ability/fa-brief.md @@ -1,4 +1,4 @@ -# Ability综述 +# FA模型综述 ## 整体架构 OpenHarmony用户程序的开发本质上就是开发Ability。OpenHarmony系统是通过对Ability调度,结合系统提供的一致性调度契约对Ability进行生命周期管理,从而实现对用户程序的调度。 @@ -35,7 +35,6 @@ Ability框架在API 8及更早版本使用FA模型。FA模型中Ability分为Pag ![fa-threading-nodel](figures/fa-threading-model.png) ## 相关实例 针对Ability开发,有以下相关实例可供参考: -- [Page内和Page间导航跳转](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility) - [分布式调度启动远程FA](https://gitee.com/openharmony/codelabs/tree/master/Distributed/RemoteStartFA) - [分布式新闻客户端](https://gitee.com/openharmony/codelabs/tree/master/Distributed/NewsDemo) - [分布式手写板(eTS)](https://gitee.com/openharmony/codelabs/tree/master/Distributed/DistributeDatabaseDrawEts) diff --git a/zh-cn/application-dev/ability/fa-formability.md b/zh-cn/application-dev/ability/fa-formability.md index 2cfba0d06c..41ed0fec0e 100644 --- a/zh-cn/application-dev/ability/fa-formability.md +++ b/zh-cn/application-dev/ability/fa-formability.md @@ -231,7 +231,7 @@ Form需要在应用配置文件config.json中进行配置。 } ``` -具体的持久化方法可以参考[轻量级数据存储开发指导](../database/database-storage-guidelines.md)。 +具体的持久化方法可以参考[轻量级数据存储开发指导](../database/database-preference-guidelines.md)。 需要注意的是,卡片使用方在请求卡片时传递给提供方应用的Want数据中存在临时标记字段,表示此次请求的卡片是否为临时卡片: diff --git a/zh-cn/application-dev/ability/fa-pageability.md b/zh-cn/application-dev/ability/fa-pageability.md index 7ac8555694..649f3d606f 100644 --- a/zh-cn/application-dev/ability/fa-pageability.md +++ b/zh-cn/application-dev/ability/fa-pageability.md @@ -44,6 +44,7 @@ ability支持单实例和多实例两种启动模式。 缺省情况下是singleton模式。 + ## 开发指导 ### featureAbility接口说明 @@ -80,7 +81,7 @@ ability支持单实例和多实例两种启动模式。 authReadUriPermission: true, // Grant the permission to perform write operations on the URI. authWriteUriPermission: true, - // support forwarding the intent result to the ability. + // support forwarding the Want result to the ability. abilityForwardResult: true, // Enable abiligy continuation. abilityContinuation: true, diff --git a/zh-cn/application-dev/ability/fa-serviceability.md b/zh-cn/application-dev/ability/fa-serviceability.md index a7afd10131..f1406df29a 100644 --- a/zh-cn/application-dev/ability/fa-serviceability.md +++ b/zh-cn/application-dev/ability/fa-serviceability.md @@ -399,4 +399,4 @@ export default { 针对ServiceAbility开发,有以下相关实例可供参考: - [`ServiceAbility`:ServiceAbility的创建与使用(eTS)(API8)](https://gitee.com/openharmony/app_samples/tree/master/ability/ServiceAbility) -- [`DMS`:分布式Demo(eTS)(API7)](https://gitee.com/openharmony/app_samples/tree/master/ability/DMS) \ No newline at end of file +- [`DMS`:分布式Demo(eTS)(API7)](https://gitee.com/openharmony/app_samples/tree/master/ability/DMS) diff --git a/zh-cn/application-dev/ability/figures/AbilityComponentInstanceMission.png b/zh-cn/application-dev/ability/figures/AbilityComponentInstanceMission.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2c2f3d339ee6107ffbd65fa2e1a73fd7774304 GIT binary patch literal 81278 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/ExtensionAbility.png b/zh-cn/application-dev/ability/figures/ExtensionAbility.png new file mode 100644 index 0000000000000000000000000000000000000000..3287f23c7587e3980ca32efe275d5b672e6b9903 GIT binary patch literal 21335 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/contextIntroduction.png b/zh-cn/application-dev/ability/figures/contextIntroduction.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f1f79d715377e990c4d3c3ea48bdd62aa139bb GIT binary patch literal 56717 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�N|#b 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
4SDKFJ-D6TB?SQOS0&FWO-$(kC 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/continuation-info.png b/zh-cn/application-dev/ability/figures/continuation-info.png new file mode 100644 index 0000000000000000000000000000000000000000..69c38949921686520378a118df2e9f82912967a8 GIT binary patch literal 13672 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

2|TI!K%Q`e;guYl!OTO1MA~P7+{8n3Acuo^}9I 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/lifecycle.png b/zh-cn/application-dev/ability/figures/lifecycle.png new file mode 100644 index 0000000000000000000000000000000000000000..694238d99c7e70d16d6bd1a37c86bcd599a9b2f3 GIT binary patch literal 31976 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

DI7`i8J#PuVfh>SSE3EldfC|<7oc$_T@k4yE@ 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/stage-call.png b/zh-cn/application-dev/ability/figures/stage-call.png new file mode 100644 index 0000000000000000000000000000000000000000..28f2a0f7ea9d86fc81e0c1a37d556384b14a9bdd GIT binary patch literal 3003 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 ZpSStGYr~$&^v@7~#vI2TE4THd{u?zmTL=IE literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/stageabilitylifecyclecallback.png b/zh-cn/application-dev/ability/figures/stageabilitylifecyclecallback.png new file mode 100644 index 0000000000000000000000000000000000000000..9e17ed71f1dc9d118a490109c1e5181d738e63db GIT binary patch literal 24197 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 z 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 IIVCg!0PYognE(I) literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/stageconcept.png b/zh-cn/application-dev/ability/figures/stageconcept.png new file mode 100644 index 0000000000000000000000000000000000000000..8b14ea5430b7c94092eca2f6ef9aee350b006504 GIT binary patch literal 34975 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/figures/stagedesign.png b/zh-cn/application-dev/ability/figures/stagedesign.png new file mode 100644 index 0000000000000000000000000000000000000000..75f5344d83e7c1c60a0a480042473a10a701449d GIT binary patch literal 33494 zcmeFYby!qy*FQ>0h_tlI08%0~#4z+wLk~lDGjz>RLw5=&AYEdCD2Q|;Ev=x4lprPD z9cS}=pXa>q@43#O=f88VYY(&c9c$fd-K*};Y~r=G;AFR%ZsXwKkg2LD>fqquE#ctc zJ|iXsS~{$Us(~+Dj1F8Lr+oO{UmP5wEpH_wZ#RFGldC-rhp@swcN}0rM-PlQhp-|C z7_8)KZ|jZra0hOIb~g_@CzO-D-9LR`K`@w4P?!%aq9-WKAq*3R0DlBU_yxtlCjX4L zcCdH<%B&#k|h2oKN#^YnDJH?+4= zck<={D~k$4_=UxQW^Q#AJxvV`umW)J>f~Y%e8KH)T|924*rBcc_?D)S?HqNOm(=kRJlH=~|<#(N6!1+l|on-qsHP2<+i4 z?Cj_-sA|LKWn!G?W7@4^>t$(C{$9x;Yv8DjTXQ!c=v|ebrG)_A1_@ib#wu3axG9Yhoh` z?5VPohq{rYincn+M#&cow-<$YA%M+O1}>znmxH$!%oFV=sBY+Jq$CD+gJ_^2F8&CN zwU`DH*g|<>VJ&^6tFD)@wyu^YMA=?k)ZGhgr0VH!4e`}-v@-yxh`HIIG?l#lfYE{& zG&le)3^sIhbu%_Ja>oLjrYs(y;cufRigCoa+Sy{fY(xXJ^blf3_PWYo6%zzX$w=JE z(Li3v+Qtwi4)anJ64!NwINL%6?YsbrZU`MT)C7s}1qf*yXuGMSZWfMEMrlI9C}Cky zRp1G#<*TiY*0+JU3E7!wf;F%hgfmjd1+EU!aCSh5I4YnZCf2SZXnPx!sF;XhUNMVLLY?7cel{S5FY4 zZlkZMY%PM-P&PneVG3eyNU(x}wUD)uFcxbgtOG~;Xe*o8xhrB-;M$r2C{JT=B~294 z&p}y9+{o8S-NDAtQN=}G*UwWwz(5b;XJ??Rp|7t1Q9*e5K^1J2{5*Vx6PC8HMH>S>u(61djk^gH?4{y~Hug2JwzUyb6cJJt)DQ*3T+n(Z zP%)&llZL+#TtU~^$JM>~0p znmbZk*%qv14|7o!Q8z~U!9{E_j(SSg$}SqB^7e`zVj?=4j&^E7I+`|mt~xr#x~`t8 zE~?6In!Z?f14k1bBt}_Y0cES^BdBVxporBnLCQNAYXS^(90fIX1RYG2U3Agvs`^TH zHZUKoE+C<%wXQ$L&R;|eFfnB8IDXk)k{R^Hi345}tC=&T^_D~R^;SGO~C5*Bg>oKsoQ8m{8u zV2p9rQ82I-0bEdC+Y<`8(FI1+NnKvaPDokA(_2AB(N9dlPhZi+SKk}1?I`Ntf)o{n zJE^(rV;t>VghYJ&Tntgxx>z?yMHg!)KdhdTqbddoF|k#_I{2Ur!5)H|aHt~6H~_5f zfOPlPad1(>3d-wQi|W9kSPgv<9W8HVxQDl%9~_R-QgyRNsTha@YtZun3t_E&<<)iE z5lCyr0Hmjul9HF8GEz@e*VEU{MN7xe$yH3n6$v)9 z=xQ5#f?;q$K^3ru16)Jb*+Ed>&)Lw~PF~B!(+eZ7rC?)X1gsC38%ApaOK@ z_QqN^Dq4z~-X0zf295!0K)08wiJPN3)LPjPD`KOsBCPJFE-$JpEQ*B*f_+_p=&lTN zKq7?{l!XNKeS8#jG_}QmHbu07wy(aRE!02}4Ysj`xI%o4Y}G`RJ&Z7-3TobV5U8(_ zldheJy^|8sSI-t1;0Jfo!g{HCd->V=xCpB28-Sfe)D?^cl^xwQl=a*Z-Y^d@Lt7sd z+}9oIsG$bcP}TE*8liy&`iL3%B5a%$Of=zsB1(c_6%kQ!TU9{?EhA@dKQ}Qn3Zd)> zM1N(dyx&cVxVeDjp!}co@~>P2JpVhj3oE@bVZ-9!fN+2~ujg;Ekxw#hFm}{CVfyX8 zUJmlv=o6I=zNL&8l#J!ZiwPHABwpqUNd7H1IlI0rR$--aGW*q3of2)wf-#N5E7^5B zS--Y(=@n=vreI~GWn}v@=uB}N8dz~@zP@oOx&9vGi}dpH5@I~63K&D@)U4{BS$E$v zX>nq_tPRe!W)EusSrLWL`0*k{c_&_9Iz!$XkWJ|h_4{lvFeqE|;l5}2(fH#e+*(F- zHX2G%)F*eo`oh`fd{lkyAclz&?mijYB7zvnga4CrqzmM-vIbJU7SG!)y zn|wrz)wur*Z>$mL4N?%tC%7$#vku1vy-e&Q5G+(yb{LB9iQ6MHofsn>gX_HB3)J3^ zxex04KmxndMTgg1G-xc6B<6AceAsm&<()wZYG725ypzQ0QgAw)M}%eH>2|)BB0%6P z3)vec{k5_1!>QL}x(uSk4D!F5IL4fYdN{^cR&&WJ8Bo8paMoitAJqB2#9pyqqAZDtILWr|23ej5+^iw_h2OwIThJpV&%96YbcNZ#suOt*-~-%zBfd%UdXJ;EOpG%bX=GdFzTW&od9 zjn$NI&%L|Yl${uHcl&(g>Z~)8?sN)8f%>Tk#cn#&ATzyqNcXlBA$dxb zCpdJ^x<+5x#-Y2y?19}kS=P>+|L@5R#rK4)7;y*RW5y%J^ix5AG>If=X+|OatrX5@gk zaBf85h}#39W!>DCM4)#T=ml8=z0|&P{Y|ml2rQ0~SkS)~osB-fpFkB6rbX~EZgnx~ zU=j~mAX7LcWi$9zERY`PZAqkxkm~??A8v%D`%xeZ_HaJBo@62TFx=p!Bgwn$1i1Oc zR#acVF#oN(RV?*?3+$dCytMwK{AK8z^po<|Qd#}Es>Vx;9^!qi-ygg@kdZCS+EblV z%Pj(F676g@sdXDww8hghg>SHmfWaS!I727`POf50=Ud7CzOvwYzPA^_Lif!l(;SXj z860B59ckY6R*tIV{=?EBT^CA2wzo}pSslmUc7$FjtaYDJM#!8HAp~6kq8*PfL%CzP%*9nKm_W*kjwXBD^}ByH$Mtpdp26d!p}e+UfnT zyK#djkq0ZBX5W3g!hRA}NJ%E2&3M|Q@(@V@3CUY%jUGa;$H&s>Rbq)vfflukR>+?8!{Gq1ob-&m%-qM6;gVI3_hV`td$PNzeMB z%$8rb#=q!R^^73%lZ#(akdx%!?Fw28G-e8wd!&ffe#S@e<6F17InhY3+`D{356sH2H+r-8ZO3p`^+AVP=weRw3dz#8V)vDD>X=k)^kwT zBPxHyV@(Q7yF>Rce*0oxaON&TXOf=hUWSm+)K=QABy%jQ)%hUbn}6y%r0$WL*t_@0 zy}oODy<6pCRx>@3ASY+%HZ^a9RB3OJ^MUu>zLW7dbj6cWW)6LC6wT6ON4sYn;N+pH zYVPN5hQiN^Jqon9ny<+N4o?m9HK3NO7R9sblx2U2(d-LiUmEPYzt?s@+z|6UH4@tO znECYjE_;n8_8Db%TrktN!gc+X?}!}TiumBQOjoui^t^r2a(Kb8qQQX&xs_o|-ZAGg zkGy5d?iQ4Fr~UMB2-a0g->)QHzE-(^<()3P@*tp#b(qF- zcU&)cuk;u1au(Ebh+oK~ACqF3I?#s5_ z1?Fn(*z({a59hG%h)j}u%h3-F)OX&y`Y>8wYs$%JgoxUj$>}58PL`KR%#g2N^CiDEdn|tq z^gwv?N$XT8z)mpPPahS{d}4j)m^o+sl*R8|HrhJ!W0F#9-!~HX!IO1HONV~XX*xcX znE!99M(pTN7wLn#&k&vz*%QUm-l~NQO=bv`L)J2A&(eWvg~6MbqTl{3l6xfj!SK*? zx$@#^KHc{g*D$rdPcu7!O-WV6?NQc{)$RYJyP|^pep?Xi9B-GB%blry`Y9`e zv@~0qfEuhR@2BW~wIQ*7s}LpPq)X~&gQ)|2V}K*e0s)J@Zc$UVlUXpTO$(j%Kh>02 zj}Ug+$f8$!o1ElL?)yWTvqj%|4JF@Tj1x-S9H!=igYhcc zrFN@n{zkvG@OHnu$V}YuW_lC(nk7{9!L(w-gyw8-nhgIlDr%WS6T8K3dCxMP*XZ~F zY};9I+hFcViwQ-4qKp9N*p=|m{Duz=4a%gGjXH)dIVtx>vjV!quahsXo~f98yqu(F zvv^ItSO0xoYw%P$;JELs>)A+|aT%wy_qBo+CQl@FfNkcC5+MX-d^x;i@ke__!KXE2 z1wLF0h`ecK&EIyHML!*5>Ylyhq$~3xbaodZan)7MF*~I*N3yVg?X~ST{EMwXXTPn% zzCW9z!l!xoVx{F;ymz01EBa(5wT$2EO8Je{R++f@=4-X|I@c-izPMI_rykYI+jHDY zym_VRRgXV$XDYofw9@bV>Q?OS(pjM;Wx5=5?!Ouyo4?WVgU__o{j!l`@F|x)f2_9U z!F*)o_(=mFb#tFkVF1~hy~W<$jg!ClZF#($K3BQD4fgwVXV}jp;T8va-JX}W&HVwp{M7;chi13W_+u;!gZ@JInClq*9HpS_GwGF7{^2KO+30c( zGLyC~h`D_FIaSB@zADHNxs}PYa*7C)2KcyAYBBHfLxNYdRxy?{N`SpmiJ%qjbvH?VyirBAVCga^IHV1 z%sB+cn};;^VK^(C94!4a(q3%syd@`h4ncEMi$}EhKf0K3;rH9{F`b)HgcgqMw%eEy zdmy(uzdT8J{z$@SXTi_?byA+&ifwVoCE31{j036kFRf^9dYYmjAx}-d(3!|>_fxji z?bJWqmdH7rMrKmyaLaoAeoJP9d$*F+ zeH_$(n3ZR(v_()Hhdxz;w`oAzxEWssDGh}LJ}>%GGlDjlSyvZWn|_H}UZwxnh@qt(tuH#i+Uj=(R7U_*$4q+4Aez?MW?Nukd21)Q%*~vF6X`97w<(iCOav$+xQNcX!kr<9#gO zcV5)_=gh2){&?+f_9>V{gD?2G>`Ym?IU22)M}#aG;hnvx)n)Csrz*ZJ55c8bq)}O5 zsGyhrzAc#;(&F5|r14>D!mw-cQJX%0$A}yC09{T92eUwXoLOqKqS(ja|cB7@Rjs&_Xt&nU=?Epmb;1ffJbQoK@BoR>n6u&;Xlrf*+z z1a`5A93-;9glCm0cF47c8>SIjtjA7>D^kZ63htS4{CK##z2{&7sPVIUep_c8y1+5#SFjzH`C(Yac6eFGkjx~Ua=F!YdO7Oe^02g-o9WdDefY#ytSmW zx9TZPO^?|FR@X&pqN|+vpW-SSN5XAce=nG?`%=ulb5Z4AO~-S#NlsEt=XI~JWG7{v zG~~(KC5Z3yx0bL8gscsuFO-J6R-6&QF7LiEyo3Ngb}~_Fnc4q*YRHG?evKHiRdwN3 zGvZqP?`dx#d--LCOUJ4BcXF?>o;F>V{_mQc(-&OlQgPh$mc~@ZK~PMLM#CI!)LgDS z=skC4+AVagUhA^IjBlU~qjGv;L!?K7aaTfS`OFcYwi1+!HV?ayjGHWHsE$ABF67Yk zym5)Ge<@P}IuAU=sR;?JPFnfrXvUM4dG54uYGqmjrANEH zm+0gEn)$*A!S|d>0G2?{0zGFVwYX}bR9sU}GsEu{Xew!P`eZ&S^Za%4zy~QM4RJQz zPRSQvaz*)#_0n*K_zIpr)hu<{ijzPT?tiy6fvl@?isW+dc#7WplJ6wNofc!SbT?#rXS^1M-8Ima4r9INvprk%banKOSi$Ti+bl}$+ zH;tD12Mt+{)0jVM&BOvMWg#;Op}m`B6HSlTmYAJus@bN7$M;ZJ_j7-{fs;h2X3(x$ zaKyl$-z*kw;}sP<(`6w{2Ia@gQMhv&^(6M$&o4N5pPA8|%b#pE6eXbBa?k~7r*J8% zj0q^V{J^B?#O(ABsl_(&i8*N&;*vP~I&fX7;gr9FSgzd+IJyrW=96W_(k_WTVYL02 ziL^W$-t&Xg>18TgnVQL_rXIi||4+)#c;I)8lmWi>{FV~@^t2-pB8iG`OX_4V~e zD=(6-90l)dZwtQDuL&PUb%;^o;6}Hbz9!8J5TT(Of6~7d>07IHi!ecqya76$?Rk)s)!ACd%H(Zdhcbrgh zQ0I@sgN}n|dZiZ+#+$8)f|9z6L0#G#p!O7_mB%^CxpkLn4z=rWeO|pPTPud>U4oAx z4BH*!WPn=N%(m|QWI*yycc!p8@aHHe9XrE(%0!EupF6{f-U|B)Ig=6ZbX11yKQgHe zVdXP|=9)k@!cu9;F7Rlk0RiOfRy6?k7@p;M;?@(7?&%QN9yB@Nx%_BD{$aNINyt>| z2f^x5_4fqJn%CKMp>3%W`N59wH;XGfsD1|5?desa&3{$+Vw}H!l(txVd@tbO?lWNP z;(mLY%#v8i3`yE-N($y*!}NFVPM^n(~m9 zn2(|<2|V5!ue62F`Fi3IhXI#d2=RNbE`X z{rMLC=n%xVQ;;_TFOpjvH*PP29pM-I3FII&EGr#&^ePP@lYMsZSD`TEtdxDY?R-nJ zakV(HMCY~I!La1^=*jM%`(FH?R`Za(6#t0kkN3ECX#;Y7{Hw-AJ$`$6C^yzQ=xec3 zvY_lZ3zw}EO;VVg2{8~4=@48}S^_ZsLFb9``!gZun_8S^SBwz%yfkQqNzJ1f z|369NH7Bsqu4-ZF&=a$BqDE!MLIyF<#ajs;B393DLF=%|M4(| z)Q%h%X0|o>e9%kwVkc5}HUdmPgpa!%jzip~Y&Dz*{GRyxf(=#U{9TR2GsJ_dv~az= zDOu)pkp`Xxas4UCBRncV%%Ff%Jk4O3?c_)a<5%uUBw`s6pu=9?VUd~Uae;2t|GDQ? z{zJ-rwwckM9~E=^J)r6x5U4eXtu5}${_8W^^p>Mv>XI>$L=%;yZFSuJAqd3t=4^$)*$Hja`UOoyP?dP(NI!vx@9v=f!hoD>_h>bdpLL? zZ4lmt9^#UK^}4MuWT23(dLHvppzQ*j@72QySk~pi7^x!TOjwvPKz(R0lj?^u)uN46 zre#RO{^lOwGom|2p{Gmq@VuL$$$}2y7PYRE?^j+9atK=7BgO+gWe+dP-T4Swp%-?$ z%$CA_Vjryh^7O-lo_aI~4zhq3mS-6u#~+c$yzoo)Dg+t|hip)^opc%RtEO>6J1*Xp zmEWEw=r_ZA*%1!H!80bVckAe!+csElJG~w|5qA0U7@lRD_Ch3p#rB9D2e}2De<(CS zhA@7KR0z%O=?3qjW?ZU7%$0~?7E5|V)Qf0a7^sC{uZARLQ!$&F6yplEYkDix`Vo+> zle%-aoM3@^ak_pAC6D}A#!Pv*_MO*Tm>WZqbcZV}>^Z@>rvFLlY^~eWUM)$=bIR8+ zx0%N8RLei@`g{?#LDs}_>9GKZef~ZrB8yxSC9luC70nCdc>pCPCsKQUWXb$JO2Nc1 zt=yd~CI04`pLX0*!geD)+>kL36Qg{<0}1KvgkNxjF2q0y-#GitinTkT zAZ;T&PLB>w2D_GOMHl!IgFbuoL3$N?c@m2y&S^nrT=l97k+k=(GCS&p6GPgWX$?zsLgmx)2s? zjD2;hA&h;uEhOE>>wII>{HGsN0nbF zZQ6Z-uu~f-zHs7Ay=X&x`b&fRHrs5NW8YKO;W}?9raC5$t@u*`jN-`dlUSv(-fzLn zT>#-A9}p=e{u2~R{9qHQe?9?c za*rQKIebawcr62q)AT<$pnac^f+NP5kiuc2mVu*){d7UIJtG1eZcm*C7T%fq3lRRp zzl6`md?Z1Dr@xjJ5Pbadv>+s0fBq&?{IUQ3mGd@wKI|2QCV`rGk5JLfW46X+f_v!h z0bmn%@76gu{EUKA$hP0UyixOIFac=`u>WsGBsAz2H^Am%z%&^f{9@El4pbnr)?-da zP5729kv)GjELqe4b|+)YPjx^$lk28aaNva16l>n&&C)NDFxA zG_h6Mi|Ld3jSiYHZUL$Nu7GOQr^1TnfIJIUSMCQ-Srt|b0=HOqllFnU1$TP1i}_}; zyZ{8>MqI>Hts6=1&cg@gg6-%V^F|Yyib=(x2kxzj-kTz5V0b$WST_k@{tep)Qv+rv zC^bG|ymt!u|ibMen0 zN@5K;SFrch>B?ApI6i)1EIzF0=}mf7l?-onrCY>%%X34vjR$Z&#@u0h{-04?32-lR z;#EyR;eR(-jNk-FcdxszU{9;gHGqJw)|XukM2TGvbeWX_>XG!%g%^gTrD#WoMQ)?Rdk%)8@EYs8 ztT{d8?%Fq7*z=!nx3!H;KVcLGhl)QqDdW1}=};htcAahm)eNs%oj4It>FV5UkWMd? z#N#-$!u=JLZ_X{~{zq%TjOHByGlKQ-i_KFNvR>?TQpC%``U;sJKYCOQl#CJ_8ky$4 zjNdCPWmVF|2?^vtOMuYY{rGY(=M~aj7N3}Ds5XHde8t>2?{d(&{tAoh-L55}NZkGL z!8G%XTs%}u$QdxuAOBhe|IH%!LvtjU0C}XjCdpt|vJAC1Go>`A!yGTq4ms2i^>;Wj zHT_dBa@6k@0?8I9d=YS+7mLA9eMv$6WGOhrd#U8rJ~#INZk?ga!&&>>YYF=D(0MHru>q-6Gtyp=Qd^V2>+(4 zRuqyISOKUA7=7g?WN}5qjo4N0?C8b8zqYaLL=Mxkbt#8nZXA=!n`(8_c4lo zGuJ)N9z49SH|kj3@I;9NxnbU)BS3@zD}Hg2zqb3QSF&)lGX;W+#V;<94*XWpc4gvB z^I$eC*0Nn=ol}Y%^O=?a?=L41K)-EX%O^c3Zq|N<*&vFLl4`GZ=e!#=ezZBIPP`2i zkEyLE3#5|C@dk_oJkGGfLRuxQRD#f+zZ4B2B*h~K>@!NP4+12}Ae!VC z!Nhxxlw+;gPmAbK09zppkfyvxq>o3#aPe1x1Q5l2Od<=U$|e~vI^rx9Kwa6Zq8Qg0 z?ultb%EbmKw_7erHxOFlnJJg(cy{xWz?uHy#k7>8*+7*3HYtgkB1D!~UW58De#t|* zB(yd(56mH;erfRSF}!}Wn`jv(_u@u7@-zr|DCJVl8DoT$Oz+Q++1lTLIMslQ40`s| zRo!g4V{UXMGvyQkR4ad@XtX@9WmQA^MfkkGn%x|Bm*)~l zfAL6QxOQfv>i*^l2aI9_T423?l2lnX4|fi-dRJ%sW{Vvx{6%{VIz>f~n>-wU3^E=Z z4pywL8#i6ezBCbao_t4E<2sXJQscgU;n#Au?Aoz^QDy7+^HRa-8b9aj_laq_*!#0G z_wL>^PiT)|2`!@FOn!Sjmn*m31}SK~H1l}Aw$GO+ag`r0z z(pTf8dTlTT^Pwp79O{zlKq}e~zdpY7AL5MLdlh_8cs%!FV0aUjBDGI=Svo+Xnrmx+ zecyCjGezc@?*6#cbuLM;WFTj-a3Epu{-NQ)=0?S8ZiR#PX5-=C-x+SJzv6SB3!*_`OuU z*LzE=_rXLGx%5TJt09GJ;G}UoJoY-6qGhjxf$3~e&?dp_^(U^|4=e(&{hI9y+SMx~HHcxrDr`#TOZ<)M=5 z`FVsi^n^W8X7+T7YBj$JYJ3pP^kR^Mq_7AWP_ay>F(R}FP~DoTSF3_7-$^SvzZQ<}%?y)=7u zx=rdCzNt}IDo)BkvPg|^=oUoFcz}yV6Ww)+%{0q?GtUJ!05FM&`}q-aJb0M4)0{KQ z0M2}L5B6Z!U`z;*-R>3Ne-JRtOFz@K{HnrF|48+$Nu6HzT79Hg zEcO8mGIKR@fZHC2PZh>Z5ydkb3F`Z^l>MQmyX_(!yQ`C4bOAtJdUYWRCJjM6WX<~_ zT+Fj2s$(6D(FKlc>BslITD>|elEtt0g%e*?4BATtpL`|&%Evg#M%-`!`I313 z`1|pDm_m#+E(oNZ0EiPFi5DRi+D?BZ-ZoCJ?K|aGmue~JG#SIRHPa`wP%X;>Go15m z+Sj=klFGWXHB~YCvUB@&zy3S%g^Lo~CQe(Ggg~Wi^@RMC7hLjI?ceFgeuClC*=VjXaAt=vJmv30&k@=3w*qfN7l<(- z=tLGuDfypC5`+mIY#kQP@yaF^$Sd_RlaC7R#4|N-UP` z)RH$fwB%*ZKnbWH^MZcIjCjwgC{NSBi(dP7H3>pSjOMnO$-N~dIaj%^Iq_|v?5`%d zo8I8~=Qe{46_Bdzo(bDB+*ZWip{x?cg>7lQ1=8#{gM++E{zXoy=4|a)1F}_`S&hEb z&8_`=-)^})V5X$K0%anH8w~SA^(5eSV*xL*}VWzh0kQnz@P1 zPu65>R7A=wM2s|wSV}djWYsdzil%?-CHsDhi{u&Ot8-2%cc4!7glc^e#;wHtTAjj) zv~-nAclh-+_j;kKlrg*&-3^vFs^9V+^qN`yIXqKh^Sb{lb5AzN3VI`QLnQtkief38 zS07_vDLviilxm7PHq7=2&ut_bSz0NS@AX-SIpkryjQswb;L)@bD&8V2Q1Ii%e8GL7 zrO6S#G(e|&Ed!t&&xd;_3>W;GK12jf07SrZO={XGN&uNCzMA^2>HpKC^BPN(l)K|} z0Sl+wmj|R@y5%y<1X$VZXtDLcO(iyPkI6>7FFiJF$*+VjB4|EkPMw3hNk%Eljpl(Y z|C@^kxg^;OrK!F)_-w+L%O=a;8gi?$>HEzF4|v`uXSSDX#u$A42)6_>=5F!#TG6<@ zEHm48pzDxXNK-%JMDllNdU4cD6c=YyJS1``irNpRMQDXzoVUXf@QE8kC6FlLvl>ba z#KXYlUCM#TPybj5Is=c2^4*#tT3+&DWy&q31y-L>Jd-a!)XFB zklIgNsBa25^B(Sk_d4-~N7{?ZpR2eG-*`|Jt4V9XaShX~n zB(aU40(S4Scs5$^&EQhx?!o*kk|vqDI555LG?66cMp!g~WBXsqCER>(qbd{c;poh< z8pzC2-m@ss1OOF@LbsLV7^j1Hd4L(Rbb*ZjnCJeZ-iz6kXezT2z9_2+u zyGz=OF~q9ehpFn9rbO3MZB+MO@BuX-PI>nE(Brl5E%-Ik)zZ?J{pYu+7F`T0Qo+Ab zt{pTuuc=}^OA&LJz|q-ru@}a|Z**q@$W|{$mKm)jpA2e&`Un--Sr`CyIAEx>+5x7vPSnL4A!F_`-kMb7CXe$2EOsPXbm+3FrrOCVg}b0NrBJ{koUnE8B(ysCe4CM(Lb{k;`uZ%ix`r`kNlR`vEUqxa zGsfq5W*Jt&o^QptV#WQlmBu`QvpWJz8PL#Xz)BD+F^A5amFICv_ zY8t9#{`bBDOSO|fLn0~eu=tD@=31xC8ridbSH$_--RZ}ipv(r1pcT=x%epzIfeg*z zI9|Q?i&C^p0-p0k1gV@K-PY-tu9wBn&}SkmGbC4n1hU`f8I}uuH&fm?Smx$cXRpfQ z0dD+wv^7^aF~CQ%gU8TXh(F|!-g^~Mmo250P>h>9U)yEU~&&sZ(%i0&D#|!Db z)62dJ(h*<+Z+Owf-pb|U+!;W~eygUCEuxqWPLs)REF0hZ@Wt}0Oj3@Kl(S@PMisZf zY-4)DM3ABqv%}Y6KJ^m+UV}1~A@h&PIij_;69dJc0G)TA>6yKzrTs3RlkjLfamcW? z7v@?d;z;aO6iy=|i2J|3tRi*^78;Y$)JxroJ)^_lbsa|5u$;oK8QN96G9+xiIx+Lv$4 z$>i~MtEh~?p=@rC%kRHSzvX3RsliIVvG0^l#Y$eRUA29$D?C`HJMK0DwBd6Xc%OP8 zNOFbz)tk+;V!PKntwW|M7bW&r2S~j)lSOg@p={)P%L$6i%J&{7Smq8>5&f!XLn=@b z#V^2DGAM}y??+QFNoF>yd>`O{Es>N`LqH$HO8nSTF#5-43EY0|_$WF;d`HP{12+!e z)||dB#cT^A z$FmjPlIsfh;vY!-92ePaC0dTWd5ZkZME%dKsWz!t@-_d+7=;*BFUpgnKQF4MSVvC9 zqHmUa04(?A41MlyT;xw}rWwkGcE{t-{+h%DEy)06;FU#=A|L}0uKUf;Wtl07PHkOu z2IBD3fG1Nb;3+XeI7?Re0#++_V)*F zu-cQ$Vb+(W`<0ukB}X4@ZBv2woZ=%z&IoPAV&z8HiHq~%mWQw7XR#iS%*VF#nz8Rx&o=Xuy<5dOqVJ&Bk1v8|jkz+YDcvg>Ulqz} zOOq$?lKa0W4YkmDo`9slEb#5l74IZBd&rfFcJR7ab>r*@pPl-t z4Z<6`G_p>?nIQ`jkiH9gJN`p8;`&L(1Bq|S>H7~G{r@IV+r;AUviPMGQ(fPCN+tNI z9viSRC2~^B`*(Q?F8E!!_|NW0`tn%k)I4g$P0Zd=ja zp5j+)L@R^j^4s0+^>arI7?!`twj3F#M-Z!7^v$?4%qYV7TQf(7M9CwFt-j6)zufk2 znLjXf{4|p#$Sh;oy1VO=ayjc*c$U5XYaP`$M32_kBg3oPKc&ZjZBlyQB{)-^TTBG5 zXAq5&B4+cc*4>NEey*d+>UZaD7n#|uc@xiBDW2>$XWO5nlOpREz9P&{W_}J#lm{qe z0srdMAV(MaPA(&jFR1F_0=iw4UL2E^seO0ic$v@CJWbT5vJRFGH->y)M<(Gu4@@`O z&!t(!nm&x!^9fEAwS*$RCUAcG1swGaRx` zb=)O+X1Ij+)ozy#E;YzsK+gL%dGdFQ^X{Lu_c`QynT>4=WJhzyjqXy{!-k(nj(gZR z5X}TAur$7!%TGQbf7IXdX=d`1-9jGWp|b;6c0nFJFdEYm)|`xRrlPaSi_B$#kRpd6 zChQNepBs2E12NN~$2A9A=S`o|xg>E z0up*p;huxQlfaQL^;5u$y16|1-euX3y)c~Gf0@f3&+IHXsF&&5F0#Z1iapuarg8b56mGDIS#Q}dq=G~dhHoyC!$V(}U5Slj z^9JeNr+y5Tbbmg#r*jsKi~R8*rsWU4U!yx4OuT?4u+Z;_q`daaXMS*k^>#w1hMre^ zrC{(ozoAduhTREqB+sDqG!F%Wii6~a6H5I$&6dCIciHAAs-(Ax)1)5|OZF-9aca_O zt_`J5nb#Rf`Qz>IzMzzf;(p3yQz4#&W`8yW_v(g;v2HwPrT0DUZUA;?puW%czy*O~ z5c|K{d+%ttqpp8+Fk*zn=tL)4bRv2Ukwl9Sy(J=AkWoWMFBwE{(OU=-C3+{KcOgWS z5ez~QCc>z{GkKopect!?d+)ky-FyGJYrWR^V>sV)&Uc@>KYQ=bb}>$R2jVUCh0%~m zu|aIC{M%=8nT+l))XEkP`~Q?i)lM6)bocN8hxmK_f070T^tZiOVvi1n+b{xq$PTi) z+5HjhM;k6zA?_v2bK49YN!s2NxA@1UJEQ7re{!3*Su8ffZw!5-_L@%}oLFjWd(iB2 zIUT!2QR9G}(lRM~oqEV~y-#+@ux-st2qh`v_=xu>l3&f|ep4)Nca)=y!o#IXCMEm% zYV`Yjd9y0rKNfYKLhDWG&vB9Fvs_9|l(B?9@f%+XsuLye^S0z-1O&s?o+J>IO7`t_ zWp3qP78uC!J=>y+t!(|4LQG6HOe-)g%V<6Fs?@tCV9QOnglBs%nVnni zk$Akigcamvt-@DIaZjgdkLN-s4h}p{+c!)qDU4qa>dG4E3EM4Hb%$iE8w_4vVTy3E zh_awhtjRS`=(hDMb!r4FjrBdCdE~V|ACnxq}QL}RDDjWS@a3N@ti`Co53Z#RW zBd-i1Y5&6>leU>P#g^3zp2G<_@QBy))ziBp`r`F$yUn?X?c`rDajPmm-TMcvhXY+& zX`~4y_(jQI`ox z*sNK(V%x6%YV<)CbrG_A=R>2f9qm>9%~V_RM4`CYXw6q)Ka|$H`kW(4O-9(otQx(H z=cIRu-v~#lielCI1ClvP`6wiG5buo~2+kKY$FSNY=g+oq?`NPkK<}%jEY>Th_lt%;I-iIu zSzh(wcz(ExsPUM&wicdH?NNL1ZK4|4?esCJBCqDjfV%lE^~}?L2!{@<&k}9=$#_7? z#P~}Y<6}#Oult{=NC_<~4;+kB|G0jROQ|r{->}u+pNHV);q}A|TNa__+c#YZ2%@#m3goM|O{uUeY@{0Qll>xd@ zms?qx!B(`u<++6n*ipHLv7RuSNP7XhW5sFJN-#l`01k6|U&yb%VfUI2B!-7)FR{w zv4!vV5}o3P;lVk>tZ$O*$87X6R@MWCZJiO&eF5`5LJ@R}-HU#a@j{g{Z7_W4o>kKuK`3lT--$6^J*Q*j5i_I{ zLnaQ!9(5mc&hYr|dq4UJx){g%9G9MOKD+Y-b=+sDU+zz06~m-xk1^jGbPNz>Xm8aVHNY1+rk}KqvY~nj5S8YtO`3 zdi2hkv0YAOd)HcgR>rK7BhqB7xx312%ct&CaBh`NMl)-4Q|@+A=9d06VQq^MYlyFV zY7(Efncd7=*>y#+m%pN~q^3tS#ycDO_>_H`vK_$4*-GXf64%X={3#4jIAo5fsOV#S z6dn&k70nw?>fxtur^6>+VO7#g$`(y%h^=5yREuZ@!JZF)io0~gqyIMM~ zSudhn$D%5&3U4yPv@|A<@Eg-^gxMZ>cv6`_kpH+1MCx=*3WVn$(a%oSF z^3g~5eoU&>oB;NR;%>i)KXkUuB5EjVxhTr5LPpRmla#U=c&kfGg}G!zmu&eav*18D zB9WNhRHrl6&hm?PZ&gG|?xulaY?PD5y=t`OW>IEnLXKA?lar4&eX!Mh>rL(OFev? ze9}#b$U=Ry)YBhkyg#xqsA@hJYWt4gJBq1|U{QLNo`B8&#P-PJ=;_*r;^&{N79vtk zM|3y3qVzVF^*-pquzFUjbnZk^6eEiR`MRrR*>4x-`d*!`#;cB!sH{al?X{)GJZdAo z-^6zutr_gn*cOW=Rcs#)?5gi;_EHRv*=c;2dH1ZP(Qi2 zbF09KKb2o`Yngqay~q6hK<71@#~+TNY+c?@Q0rQKuQ1%D{?*j(szi(tl=c_Uh+mjUG09C9J5a{la+ ztZbLcz58BlFQqGI+Zik#{sS5$Tc+Uh1=j;O=2nA5RXi%BZ~eV2CBiycj*H>~0?x>y z0}UFxqx(Ny`+p#{(R=yG-l3=xhvqf|ulhY@XT~5rcz^Pvp!n%#ub)Qv|1HkEx8zfQ z?^BP)y+X$qPS?#}Q;`G>ZwBP4lPMPD6K(G~Uq&oO^?fCRlk_wR8-AiB`LJ}oPOK~F zLwU&eEC0fp{|$A2v2PINzDzhsua)O1x1pDI)asXUllhQS{0{{GOw^ZWT`KRTqn*hS z*6%m18*V{6%{B7We0HY_YuvY$lPc|3eoAXm#u^S>XHrwA-N4<5z`wu>K%Tkg>6*s@ z@*IC64UVra@x&TXbBCw;w7WQ0<{ z*6?cJH4!CAPs6o}Z~)y$PQUKKf4dm&sD+37O_St0kqbfw1y6`dYY*bD6a+e`z}_EW zs78}Smmyu|PbFkGz0g$}7OUxiv$ zyHEl{2y~U<4twe*Upn785p}BQPjiK^KksMLOQ-BrF#^-!%G1)J()a3|O;wntPHsD; z4!;qXjJ@=rYDw~XS5S|Rx7a0wbxQl5tbnaATz3IBUT zCT?G~h$%I=G?+gG4UcXO2dXp$Xn@O=U1$~K{kjv?W}o1^S@9}Tv^ z(sJ72WMH5V%F?uavtgThAM98?U#@-|5AE0^*0-OJ@ii#&chwfW*20L|!Mm|FgEnto z4OEr~X8h&vC_{4gj@r6QOl&I2rCZK{wW4C=|2i}@J)LEi25QhGLjeWu`Yg-eQTOc zl>oW~))5E;s(A<{K+$o{(aiMWtMOhL`xqexzkR$0j)y=MF5x-Ww&b8Ej{=Jk)DHB-DA(u^3F4x{(<9BGD6uX=;QA^8 zdF+u#0xAJM`XU0Kg)hR1Pebt@mT z>+Fr(RBWoT3TQee`IDvsTtLW`J`OOzlxw;mddob2E4o5rcTr38ct4ep-UdYsI%Emy zTUVtZgbVo|a#$I@v7ljZ!_u1AOTmIbMJf#68Q{PE8GTqE4pEDeELX!tk`Z*(&+nEU zuY+)u1Nct~d=M+CWpMNdc%Xd*aY0@5-)d?v4I40|{Mi(t)#+i!>Hxp39n^S`FnD*5 zT{ZuoxA7ug<1HU^6eR@X5Ukg!#~zmjQIp}kDhbN`^z!_sPOvn)eK_Uk0silCK=D%| z1T@6xADk?PZ-^kjNBeI>l9xwlUgH}g7Vd$QDMRvGAaUbitWYf)A$_H+JBdYFZ_P-4 zlR|fa>Cj=0DRDiFccX;Jw0Q)KrgmEp|)&Fh@vlZbjwq*j)mn*o8$)} zV3|{$Z}P}(H+LgzJ^sj>=B4PrBeuqX)A;R;x8xmVWe~WpovWQUyr79bT!WOF6qx4j z4v-XD(5z6Qf4-Z&5Sy<#vSV`1rG=Se>AOg4v)$$0NTW0Fm_j?YW`Sk1`om{Yoa1lzYZ2%QIe5Oe;3ojDB{jC&<{;UfF+I zHJP&?0hNXy`(5nJ{p*BBccGnhZ*#N;hVc)f7MPYP^f4p^Qef4fq9)-mF4O1ZrY#=C z3eOHa4L&^bd8v0}yf5n4gbljrW4*;4DYRm+F>0#RM1f1(sLYby_}M@w4}c}2_I&Je z;wXm&S8Vfs^0YkH+G&wWF8|@J!*iLH0mq#6>_qQ3nh`w)Os7J$YzJsRq2a7{Q7%~M zv$fr9pYPfLJ@g4uS2{TVs$Vg&C3WB_t#rKfe9fFrqcrXp*>1(fRg^6p|p!;Ufa-qlVQDb7P~W-ol;@0&uOW~1}u;%5t_Iwi--0#x_+{6_Jh(g zU@|)0!+FyThX*GUyN8-5o&C60d)+n}PdUBS)SX>%*H!j%ZG;57l}Pe6!@gfWyU7vU zE_|r6#&U<)Zse4+{KJ7zw6|FoV6~+9?h0}ES=f#gBTMhGL5z@A1hY=L$!(ACAVdG36 zD(>_4IZFn;?48}JQ)INIKca$a#&t#m`6`o9qexzIkokfmi1By(!~(;HP{Xd7s@0{K zrO-d+cu%2JLu~P4;`C}%@YA$CxeI5>u4~*^uIj&eyvJ|%WH7ouXr@sTQ>M*cbRE^oRGdS;5hr5UG1haXcX*wi?tmY zW99=@Ym^Gg-7Tx@$i%&@9u-^>maQjI*d1arQEwEqtnL=@!qAT+#RYcdgfl2@Z62!m#5oxsDnDNO^vY-$>25ZZwpPj$%_JRw zl@$1yTD`IN0h!pP)R#n(Rq~7(wvq$xp=XQ*B*1@#QpjyJWl(J8m8eLjdG`1_4LiFJ ztKHiL4icF|Y<94al!|9J?ms4HjD`=Kpy$r|jxRi}3inUj6SeRDiU;YB@VLDJ9si|` zFGUM)JuhYPul+1AYm73}a62tC?d-m7`sJ!(2v%1G6q`ZkSJFp|huJ!isVIXOV;$>i4WvGvru3j2)vI~fkRNJ(xN z!O+T-*@F=7P-g&=i|@{Sixs!@H&PqYL{fj$m2CP8kIaa0b@ z0x}~B;V{mD2SI!yJtuPhlOwTnGIG7KQ57e%@S|RBzX&IXkVrSyQur}4n-8}rSopl; z{^BocOjRxwqem^BIf@^5LD`SgphqM%wOAxHLaWgX7kQM=TmK^^!rQ$zUFd+R-VFFa zkE_X4uNbc~4VGucJQF&N)8uOS{djd6TVgqHs*{#@q7$5oZrOO>=vq%t{^@Z{cWs~4 z#e8xeGu*}Al7@23HxFF;z2zIg$RPhEHBWtLRo0RY<2bt%0Y#Ie*mf<$eM7k0K{K-0 z^wJ6cQ(9}%oAmtPu*)XowLvw50mW<-SSsp19-M6YRh(~*JPjmnFjng}Vhff(N}+#X zBG@Nl@752AqQLRoq{AR3a#LtfUTprzOjm86IsiY~LRHiohZ59ZHq7*UVRL)HQKb@h z=#@b>naYWN;dd3dHcV$@1a`EKlK#v$vudBMw{u&R>c9)oTcdRNG6%ONv8h7 zLBsLZbN>N;jP%yZ2)AP?&KPG(dA{|>6tB{s<|gCL z%A-G$pV>{OlG$#)`_&AIfvxE^5&WmqP;E3|(7?^i7npptGar6f>q?mf0ijW*7 zx6&TH$z;WI6eKCu^SCSDD!0gj=CHe-UMc2-|MaDP%j6j@_J=dE|S+0`RSwXktM@HHa3P-iG@<+ zPo3j<(v#tAwnOZ@2L3-8@xNXGu5fV6z!MMf5h#r(Y|VC_T(Yq&Zd^S+dN(?VY~;AB z-FRa0{nqi6z;2ohtutItcpB|C%%56eP+}ed40Kgkw~{{per{L`14(~UlsIH$Blh_U z@fy=oX|7TGSm#z#YsV`6jXixrl$(-iVZaVO+F$6R*a$a^qe2~EeVf#Ea68r$#~`!Q zh3KX1PvmeJ$6#05#W2tnERpJs?a}JFajU({G)d{DS5LA#cDpCMOxq^icr5nUf|I@% zk*LV!ADrhOljIudoAWK1l?8ikYd%+azj2X9BMv(n9-WcJOSbfKjr5GPiI-3fu#SbH zLzJI`^Zk3;ck-L0hY@tU{1Tpek2pGVT$}x@t&XNcM&l2UF4|>vtz9^6)8BqvF5KA7 z!8<}}0(=!Tt0I`c6SiwL{=Bv?AYz$8Mf$N)_fr#h+tgC>JpGMl7h(r>%3FSF@h!O(H|d1FLDnwy6O>at-h$(qg`t{T4q{Z zN<_Jcyc?>d)#!^1pciqq0yZn|0ryF7fw?7Pe;*S}A*+a$&BNYz3x~xb zpG$Y_eranSlxx@mvbVa1dC@~|$Vt&DIGFvB_(4_$gAC(lwjm}^(zEPS8L$=0caiPu z6nXml8i8JSgnZG{jF7%Uu6*YTdR>gGJa*c!YnW8z_g+-#Ob=I;n_!ErSizBU4dt6D z$*p{LN8}*qNZH)&KM}L5ihDZ+E$jVjFSd9XCs{x28oUO)ZkMz4lp^?C9(5*Fz`|8} zW=nnaWr4Ap+iNwcf}>vd)sy41_Bp#cr*T(*aN%0(C21!KVh4Iq$h}T6LpbW1=@M&; zF;tyVYi{dpZ7a|kESBWTc2oZ#-hw-S^SRjBa}YVx`-!rQ0bE_XA-ovtNBEns+{?v} zB{I}NwMdmv26(U<&@Dv&U+5Og!{SX4$Q3tyj)4EsGycESGuTak|GL@s{vQgBK-HKF z{I5bI+9}4qr~$OFSh&9{UMF-i{~;UqSNZ&_Jb^v?$2Qwny9?lUC2;~3uwjRcQxT~} zXZ)?mi8+&BRA_73>Z1884!S^a839QS$P|DwxBmSl(j*?QU5*$%&YNe4f{KVAhT151 z;2BWZI8GL>5XwEV)Y6{aFRW@#u79G%&?iiYM>=p58hSHRv2W=}m*i^8b&-n=XH?z< zkM)WVY)eP0BYW>qJBM)uZiQ`-XCSq`tyG2#NpS;S299G7H!rS%Vzar2PSv2QaDnt@cv)6>1uHo zfD>w@QA*beV&JhOga5#G8Es!=_Hec>zlo>|rs~+IPojw-A_xFG9RLJE)uEB}(RtU@ z1&aMA%ITu7&EGWnhx4|!`X!OuQZP&oH>1F1-t4D2`EV9wdSR+~ zCeU%q?<$;8$NGy%&RF`FD18gf@+SDM^YeR5j}^<6LNbZ$29M2!a1(yZb)Pw`v!sQquy` zbC6~(`e5Zw;de& zvnA&M!l-KeUWhr*)MZV*pS`u|KYuGg(bsjuy(b9anL6ziIbfJ8PP?g(NH#PuSY9`1 zpJb$|+1h1E`gC(N;3ij2)=fEYx(U_?UT<0CqOzRwwbD3C^{Y8+?VETnwdVPat={)x zE^jwzVhIrz1^pr<((q=#cbm}Sn^Zw}lz%?3J)~~b6&IsMS{vB#5n5r_N&SM9IiWl) zIB^SiTw{%mM!(a;gFQ^ia?Y6+MXV1uW%C$6o+b?7#26GYyz+HN&!zVJ2L)!I_iUpi z3g*hpWlGV{*p3dkY)X6v>*!)xZxRJrKo4bKOP@*l`u>I;?H)JQ_+WX~&>-&PHi*`U zJiGBs^d2D43RGSK<3kOW03_&y>TnP1;4#7 zE#|TiWmRY>JV*M>^T@iBX|nd1e?)uz)2EmCIH_XQ?z2zqLytft- zn=+qW1kNjA_^@P`vv$QAzuwC*x7iSaWg-G1Fp-(oufHZI)Pv2rSy=hn%()x1e{Z|~ zeR)QQ`s7?!=|(5cm2QnU$IC0J2=I1Xz15+M8Vo;m>T~|x_bbn19CNM#Eoz9Zo zwJ79Q$l9Zcr#!eaDiIs|rk@&J)SDg9Tf_0m5)f0+01QhvC{auegjOr2pRnS2?Y^=2 zyb?$%(dYTB9~=D!haUFok~!zsFCvEogF%=JeV)4g_TIG8U41Gk_=UfGcQIgS+@Yum zm5y74RysMWk4KbF50yOpa|C|0C>rS{Uwh!pe68n=7y%3sokcVOEDetU(#I-y|2mBD z5B$(;L~BjL&9(h3pKCb^CzynDn-B{=hktW{ME1Jlmrh@-nfEW%!T|{WJrrZ$5sGD<+DIp0Jz&;c0^({ zvxZ~>bauP+M?AW4K_vB6c7Y6cKEjky^yHGVgn+RQzqfM41gGJ%j?fwCMziXGAxik> z{c{C{t$WE*k{D5`ev^<%>g+Bx8izL0kE5I(yCX^p2t~xegpbJ6=w-K73Vv=L=BwTQlrJFrYxI)GRhRiyZt$rHVXZn%oby zU^-&wVx@mrLqy1KEeB4hS%p`-L16xO3Fozh@CB?fH;3}9pya&-LJyCZWdzQexH>qx zurOwAz!hN(p!Ye)gGbNU)?!_=tnSzjBxx^*8p9(Xq0g^Al?E>g zfg-`AKIZHs0E2>nKl37GQ3zJdinLH&UNq^u!QMr7hsh7D);GyO@}>&02>dbxp;!|$ zC>XvIfr0Zb36@i84tJI9rOEO2xv?*z_J(J@=v>drq+dRHb`8IOgmV2_ra(^=P*A+p zU}IHDJ>9?7^n33eKw*DUU5RhWB(^dh)C@hHR zlv_IKu?BcJuWd7*8H$HksVyI@=HmzlYlIbat$y*X?;0#XAum2UJgYl;w3|a zCwY44Qy>M_ZX7h*?~jQ_CYB-!>pmjG`|k0n(1@ zD-;5hS7727rdm2;q(5E0s46cg#{AbL=L>iYrYA%yFM>%K($N(`&4N(08)4SSwDSD& zz@YAFlNYHc_0mZ<&6(T9w)9|4K*j@l4dUxviqO`Qus7KqH4YQZ2t}VgKnI4liB))y z;S7~l5?j<|h}5N5MVW27k%Pfzw*}jT{^~PwdgxOwQTJ6Xjm-96on(v%OF+sZ5KhYB z62>G3!*6sjHJ~=Yd6=PqqERkrr~O}Qh*`Z$S(Hz?momy}i&#n=}lr`{Me;lfQ+Sz_ARNt)7B9$zZ=gEhBcL z*({E!_h1OJ%vcW4<-kB5{IvxE9m3D=Y{(APz!LKFn>*Rfp{gj}9bV(V2G<*4fa}NK zF;IiasDq!3bZa)fF`iwxZh9-N9OPa^b*qA7m%D0IBA7U!&+TZ=I0|0GiV^4|RIv#bJMya4z>{Oum0@-2FHcz8$XjE%!; zzQg463Oa*&Q!d~TPY3vS6}70P>7ehqejUd+*ZfzaSLJ!rOxt;BF?KKxzd_e^D|W=( zhG9>?Hf3ABR!q2-j1Ebc`U&AEPYbY)QG^=jj{et7VMVcsN-)w8C?}qv19tgskn$Y# zR>1Ywjs_*VBvY>R-V^o|(Dzq=%_sb*d9qBk;r@HrFoq%ooB_81r{A6jj;Y{F5+wEg z`+rjD>XSXBgRS3Le3!$cAAPs>-a!7_7uK{unD~nhhxPY+@IDd({}T7#8X?7I@5uD3 z5-2+CCmadQ2gDyvC4wwuLC%F;Y2TTuUG9P3bFuRCV zR@Nn~rq?cPEuGBM8TQ?9V1Exf1POwG0VY!JjT+C*8&^QKuHQ@gB2SKFODFWM z|Nh7^veP}b*(XGGfgUcBs0TVaIR;`if-agtIi%d z{ln2x+IQ=18ruau$C4LmOjQp1E|Ds}WJRFfDo~)$MK7_*ayp&gytS~LX~m})WWDkn z&nE#v$btp(uS@%Fxgg-(BlR&O`t*U6`JGg&7mZx+3s7!!O+-iY>)*oc&0q&c*(@5T zE)Ab$yjI32J-%7_%5^=2OaFrp%TS*wDVE zh@;v27S1Pf)%iCu*p7i!6@$x-yrIGl#dlOB@kD%~itm6b!tI9H<7klS%Z;C7a82oV z$EQMZbRv%yuxDnBHGOgV5uJ*DL*PxGdy#e^l?tQUXNl}quR$#HlivrDc;mNO~vzlpzNHB!YFOGMjKX`Z>904Mw1Tk zDl^1eQ{Dn@tV;A}uLgKg!w6O)Jyu@r8vL*U1OMLD;sRZG9E|3E(jeoL`k_iQzgj-B zk_XL(B~{cS8l`JU`5!jECm(sut%7Otb0o$$G_&*lb{}z`2V_cOT$X7cWgN>kU{rn& zPorfSeakiM#&--^x!OH8jM_M3RYZq-G*CZ5{x$Rb1MzF)0Q4cd$_O3XPNeNUtOzlQkAaCMZ`9eo*I+xxnFpn zBTl_B99~ledtlYI;+9y@%$$fLj5IoS^9hF+&DQVa-r3Q)hQQ|5iS+Qf&@{9s4;slz zv7ESq>|q-w`Xf@RCwuSuRLSykqGRDROXf1~8&Y!Gm9hJ;DkQ9WNd*S5!@P^OaoC4& zj0~3=5x7kJYnx_;CcrVObCC(;bT9Mi%uh3|;l< z$i#AeGb+tw(5Um*!wcxq)9gR4b?p}$ZmKIzCo^%q^DNVlYA-Jj`{8;&607vku+Yd%Pj~8UvMmvuZ`6n`UCALipWG^*2z%3AdO1#IyXg-wddw1NOIC=#f zW~dTr5HGaRp9#y85yaRq;+`VSYkxKKX&M@d%S9>)(cT7txT zq0Jy{X0xnOK8(2Oh-LTOb;n#aKeAK$Ooif;hN@%wB?Ble-xMbYIsNurt>$bfnYT(a z%2EG!V4aE_{dSeDoVTzVf0-y_UU0Fs_%O+9iYk&WejR34ol9Kqqnm5@pKRmW(C09~ z&gd`2KXz2^b-!nSZRkUQZ+c|YtY7(CvvRAZ-8F)qN83pP4<*^gv|_wld@xg18V@Fi z+$1ODeGcYY3KS*d=S64dGS&3gGu^N`oSsN-Ha6~INl(eW+%Je}%@d)x8>M?C0CU^tN|Ff?A)Jq!;7v=CN8=6XMfSLqq>QSD88h(*C9Bsj zd&Zcb@_m$Gt1)PoC|r=QOF+UT(62kM(phB4HYFfmyrtVeZymaAH6gE`-Qx7V&^$|K zI`P4fR9L#F^NqBtR!VpHN2T7HN2_V+pvEO;u+GT=+PBBi{9acdnIbP9N_^eZh}#q5 zS^yksQ@7ugvPlI5>z7Lpd9<7H>5B%Z3us?tbe+95aj;0>cz=LIf6HH2hb8WLVObd zUihCT{&zuj%zupfJoA}Lt}eOp-epPU4mm=!|NFtk$L;3ZEo&BAG~@&@Wo01v88RTg zT-U=G<{9t%j_>}Mm4{+D7I}kk7>d24W&Iz{?HhJP2AA-q)#BXh2%v)048HrfR}G&O z%D8`X;})bKP$GTo&UN3&M1)0S^l%39;3ni>f@k%Pd`qpy^~? z`JwEPAZ;*Zo|3_&Rh6@Z(E2lcy;sawN>JkLi#LK&Czh)k#D`7X>TU96VamD6gtvWy zat|4xceSl?g9-A??IIZ4=0g67p6e<1iPnx5sP1VP7P%Ev)t#9%nTp*0Qts&bBJUY+ z#U)IK+#j(F477nx>ZQ;(>d6>P3tsv{QrOf&r{XQhHE<^73Hsp3P4?Bb)u|tkJ@{8Lnv zg{Ubz{xjYk?T!5xkg}{i0C2$`gY^mw!-J-UE%>J(4<18wK?`)KDE-q6S5cAxPjrHU z{JrhHJxnnKQAGn~h^j0^1w6iBYGi9}CaMSnZGViPH~2F2_Vf#6O!30Ghsk0B!Egl? zS!G!T@CfFE3k(2*4AfO*d*L*IW68tRS1V*r-^;_N?bGbR%vg1rBE>g64Z@dO(I zn9>Kh_QJTMaqaZ^#Il6McrB2nf64$8W|;V?gfA|cq$pWq%G;2xo> zWD=qX&hO}GWPmmbP*Lz!RJOrK=mq)dm<0K$AwBFu{PC(bD)y=-dZv*$Wp76--w-PU zBb24Co?oOMBrF0Spkxqa8~{hEVZ0SQjI7Kej1UplY8Vq-co4$J2dk{(85C%08Dc7` zsB5AlZ-~Yj2E%m20oHXf;ift!fJ`Hho~n)^7HB-u!$V0S9AgmZ6BJ++Y_F~z4XlObrl2Q_Q7g69EM;D50baH zu*F*X`5O2T0#$W9L*z}|tuUA{Y?z^1Fx(2IW9y}27@%UREDyu_T7~Ms!mWJ`{0tn? zs)|PDx*=h~R(3vNFnq8aEzUaIWk1a4tx}m z;I0geFrikK7&XShmB4q1CB`!pW*DGmVnNUkGca?vGzv#q!;R&!c$fpuKMY}L<7sAq zGd7l24>h$6kXIp?;w(&*kt)Gqkrn`)Jj@t}3^MbEA&`Cw5Tw49zJe-BRoBiP5lV0j z_VBd{R5n$NFtf&3>jpa@Ofl+UPOulk9)dHll@C)3wy{I|=))Z>Rl);Q;3jYze7G$n zP{-fX0D%wJ(>H)%+%44PjZ87-21;P2g||&O_|jEGdms%Q@o4h^Pdk{YqL~uG!BW}C z#7j}nPf=0P#@*i5(hTKg?C0(;@2wvc=olDkjni}YQG|Qi1_Wb$P`XAc)_4mWTYDoz z9{|q?sp{|UXl46+2h>5qOIn2z_+z@H654LQs7wKUZW~X9;v4I=Hah~o-J!KUSGptGg&O{xdY-gb4 zr=X7wQZx!u4P_7`!qzC*JkZN346ScxkJ8gqaSyds_0kJaFu{Zw>-*@qTY200IpFn> zAr|U>N*I(S($PB<+&;>X0FMm!^Ye_54`-mt)7UHwPcSz1bX0){8d(PTo60-r!PH?Y z$Vh~(kB+&eIao~B-U5dX^@FLYsp%^Ot0OE-mDSOP7(5>Ic>pN7zV-w!{a^=gU9UhR zn0t^TV10%(w?rB%;w-EXy0}m;B~z79td9}g5eOutx?{MKUj)Jk;T7y2ittA2y8DE9 z+bPQX>UrCG_#$-zBRrIBLNSJZst6+#+*nN^$VyEY1~&mP?ILwl!&H@hY(j%A!-F6` z))C6yR#p~)A#eusW5c}dO#o%-+PlNUP1JBOn1!C1A`mJDcB(qQ_V#!cbDbaq^GNpq zBSR|#KSd8iUvoYEFow7Zk8lsy^9jaVf>m@KR1jbeHVAEK#vla;C0j*nn2$G%!6N2? zFmrE|zq-07&P?7e#6!&p=wMx-By|0h+~EYOOd=+D5956Vwf-ao_$1v802 zqWnG8f`d?ws^;c@1+7YiDiW_|1ou#edxEhroVueY*4<837frAwAeBrbLsh~(4ORVN z>V5=uA4@y6Ac8R}K+TSTw2Jfq6Y&0q3OF0^R98vI7mo0=4^~w}D`QbQ3N~uWIImE! zTODhLQeyl8b!6}#h4xpwf#3fc6A=9yZ8@V%OoB|tdOEh@u8TPwkL>Ko^;$KyoJX(v z@$FiXc|Gh6JG4aKnlFkyGImjVemLCx$PGU0DbkgFZxgiH)Z(wJ%{*g=>*}bQ@0TjO zES(}>;q9@(68XcC_4d<*%#LL`ZyA2Wzb9jOYazO4ICf%1L-QVb&~@HvdGpxTv{MxS z#f8b%*w$aym{pN4igLKFLNgP>b-=+VDxQnZK!aI_KkzgZ24JCw2Y-S^g5@}dFCm| zozl*1FyI}hHk7;ip&2U+r0j#`_uP-~vMp!h>0Eg)Z}NbdJ{zp(By&KW)^vnyOdk?6xlc&gY&s zwI@nc&Nn-+_FP)-Y~ov)$`iQcTG2}1>=vc$ZAL__ZY6d+%#^_OTN|P#>J|^WM34!y zq1j`Q*cWD`OD?s$!G481uni4|U-ix1_f+1C0(_;b=KaN&KET&aDV2M6yn8e%KcD;P z=H#f?n`i7c${T}CtTm@-7*V*;q*_QeLA~Pcw;WSw&fO;~)ig|H-{eW*r7t4-@htjK zc+D3x9v05q0sy%&euJ*>YR~_fUD>KFu`RhhJHJg^ak4vZH-=Cye;D79N{ibgTHoS0 z?LM;B_>43bL(xFChBliO*S~L44g9TYPLjM)JDyY;cdA3Vm84*4p_P|N+<0Q>wX&?5 zwH_NeZCS|Tw}tO~f|or_YFl5}L_66@l@mjkh&38Plk0`v)~#FJSpvrYa9V6sl9t4?PyF5&CuXf;3MZ@ z-@{Jg)zmdj#i%)dzDvcr7W5A(`lEBD+uvzr%ccGorEW`>;tMIsnChYqc1??R|5P`~ z`uq$!x;Vix*^YT9y{qMN43*d8u)Sx4-_m*bZ({UDZo-jyl|~*HsTRc3#c7$AP*0TUBtk4OGc;vPo!XOdxuNdO=m^UYwB~!U$Fo$YGbx=fcCp6e z&4q_bpZaX&sNtWEISnOM(~4OZh%buWfCAOyx~n7VH=n&UQ=&3R(N*Beq74WZ+4c{OfS-qw{@)-ANz zha<{b&H=T5hH;jtU13s(vps4*Gn>c_z>P^a31-4WX}H<|bh&is;)L?NL?}9{jySUD zC$34I#cR=K$J&O%SEoZ`XAdv)sfP?neA7BW$WWWykEFa}T z^E0Cf`}kMdZvz3h1Nm_Xj2;2<%cqj#Gmsk+40syMkD#o_83OL>Q$!UkVBxU0h+%ZAjcW{ViM?!$@Y36%5SRy zB!54w7Y=sR0JOxcYb=W6stAyrDfK1YfI5wifB_1o9eUuX*TFO!X2v;gfT3KjXLYYL zvC__8Aqcb6g8PsB0NkY{@mSU@uoG&KejSeegi zNRpZu(?srR$L(xwEL)D`KjL8QkHMT1?1Z16bUraJH~H`-0Bj}**u%hv0SpgIK!iKT z+kC-^%F^y$7W!wxH-N;qXp=-T*qhhEf4~S%18hAM*G?`_AdxQ&O-n( zClUzXlL4)8o%r}K3}e8|VjT*+%%z0f~#&Q64PXU$Oy_I=YkCiTR^xvTp;+%y< z6=mg)G#RJ-k`l>a+Z2sD4_RIs(rhFFurOow+k#i+r>kpg2fO9(&@!gTJP?^=ibpR> z`ro~=vOCbnUizgUIiq4WScdd`>f9RBOjw?9DJd;2XlZe62$>g?yxbhQ_TcKigXek? zl@fAt6z8ZBOp*7I`VYo9IXZf6|M^`=`J89ibtbUM-DC2(`}H!XI*YlvIj_l< zXd5IFGg0^AXZ>ccnr&uva1f>3tu=4Pu*T&h6v>V9`pR1p&<&?UW>%rpu

bQI^YbmTGAv9{d){gA-{PNX1`0wxT7_b^9oD!1s?NKR3ls}-aP|xrU z41Ib6^X| z?-s4>=hUdYSY|OIF*=8qR-r0q}Mj*=ttTT zOaJAD7vf*XLWeq@Is5YT)60sm=2}||)rE5yQfl|$;GxX%(B;p0aS``>k@;bq9lg6y|1TjVv9Y+e_;%#t!mwn+2wD#sYNr^X59A47&P&1L|KiD*twxko zd+3??t8urhwhu0A9*ZYNvf5ok0aN(#Kc+B{kS456w$Qv2axdNii4-0<130V5(@qmB%l>Pkk zuw~a3IkxDZFoENmniWp{E{&neaknR8_o7!OKb*yzT|;%-KGg$4rPr79@IRvGu@P&b zMUG_HSa4j^#za&GSEAZ?HZpxC%X?{ztRH{Py_X@>f0RJbe|Kl3$y^?@`&MiFdehcY zBOkBfxrqGjwaVCnxs1()3(`ze)z68u{Qrs`BumenxE-Zk7XF?0kJ*PIzKm;57-cc9CYa6rYB5SaVfD1emVf$ywxk(yeyKjqqPAL-6Eb(cja2X zu#r+Vc8~>@)7bHbkQr*SuwkZ3&qfZ8`p{A;p=U8rD#fB>VYDvLzyaSueRqf3Jc~=% z;L&g8^#arMOtsaphUSTCG{x);kGCZ0w{g@I1nQ@s53E^Lmi8i5iy9L?=F~R1nBR9% zPLAH##gUg8hw|X3LJm7kR}>Z+pt>I=1L@P^=H?bCnXy?#8*Yt_6@EF=hR~F8Est?j zsImLxZ!=d$bd(qc6dzssZGxJDxX$a>0NuO=?r@#&^LcMpobeNr z$1QIjTJqQzJ@(y`Y;+7*6D9@l3s&`(IxTjk$)o^59@mLZz@4TieD>gy1jGrPLT<_~h5 z%O1X8w>)2+A9*izsByW)iC5P7QH1M24>LW%UPYMn+fnW*@YF{D57ts{^Gck*TzX@j zZhR?(ihsE2k4~3$>AosNy(*k)y|FcX>@1Sr-;!fDxPI*HFxq&HDS1WE#_8bwh1a6| zUD)R3(K^cQl@4)I_tm^pQz|sR>-y*QfKhc47*!`_PZ#A}DMyTOQ_~D9Hr{?sEkAz7 zpmmjt1MsNQ;4IxuOYS8+Fy-ck%tQF@Z!hltOUq4CE2!=i9eY<Lxqgq z^~ivRHTduRK>YP|&HJzqE>XuYBP7}#xYv6BuwtleVnO-Rh&By_bqIc^a@iM#^!M{xgp&&)}Y-TT$xbO=4QiJzE^_q-!9{>`w6n-|&j0mSlw_$zpb7 zW%C?`M&7umI{n5})?c}zZKd~a)^wK}{|O|$<~tJj(Fxg;Q6HLV=~~Nd=Gvwte!V0P zu!exIGl+_43yQF8YL>?CZB2T=xxqej$zl9>Jn(Wd_r}uTal(tO+_{RmD zbGq5|$|_{DJxn0-o$ZFdXjOS9^_9*(ueCfsulH}I61wk~os~EfLlzSD3T>Kii+*cs z@^a6+ou__`Wk2bd`06_niDpe1Nuk%BH`!dV-M6tPtcF( zs%HDyeOfIT9d#sMYTYIZ2iDTaJF&HAUPm(gYX?kJ<>=Cfkj37TL%tuj7*4oI+1~qU z+ElDYMzYq{mR2)OTpa{e-q&ue(xc52EME7i5k|L0Ubs=-1xh8x{-K=o1}-w6dOvyA zv|xZ^(ctuiwKJ4VACFpSdHmFVAd#PUM#x zO4x~@_c>{@xQ{xot(D^1&a@52s_~_@xB>xRt`4~c{0;-{ z*2AG2OXFfC!uQplrrwyKuiU}CC;vFl8yxxOh11gYIG5z&e$B>Rq_7VHTD~g5ld8b; z#xiHkGIts-bp_#T_mp7j@}XL{5Le*o__?OlZRPF2jOGS}WP$8^G?r?xAas=8!~nPs|$KHX2hfgs=~3n$&1ifPbz@6#s(ul(82_OO0T^E%Ywd z9|ZVGihn zWJ~J$OE_&6JvxEC2jtq$=wkRz;CRK*sq8m%X_k%V*!1^@3gR)cFFuN0pC77FjVsKS z^LC0dG%sBw>@@Ru-uu||p~G#|i`z~0WF1qw{7V~6B^uw4=^>d0;K6+eKXBt1Gus8` z9dXMw`K*>_L<1@D>`{t}qST|MMJ)PePvA6s|8fQSu35-Szm1B*%vp_3`9(h#mp7W5 z<*Jn{QYo~%T}}ZqjZ!4?)QWiGUcKG)XTNDk`sD@=gt~zJ^M&jeJG*tQkWs3merQV- z|5O!EmuV}mxM}-)SGgp`aeqK5Z8(?HQ0hl7*HN&s5Cf=ZQ}~Tzz;|8EpcKQ4GGT@q zD}3cO&neO))H4Bu(8e!Vj`^*~2RknpE2lxwVrNb)bp%8+f>BN*67K662IV#*`(TJ` zj-)b=%ghpycw)BkMhAuf@EBn;Io6 zQpF4Q4oKb}dgJsMUAn|2Z~lXuoSmw@cdm6vTUTw=EHtnkJ^SV0IX?Q4grsAFRydaI zP&xYXsUxp;njQ!E)O|1N&h)n^zhv3yq~O0C1uZwb*!s55MV(;JH2&Rd8eW>;1D_vQ zL3iGj+kTzR5@yeu?ks8v#;|kHwZtaU``L%r*Y1w#*^sRe6)n@4f zZ+6kA)FQl7Q~3wJvF~%+wai322)}p-0u6kXYrZ@(0MGA*32fmauk2+aSb2V+YTp#Y+2-B$*sr}M zzc1ghk~yNA;#Un^V9)H60PM-cPeNb+%Wb~;g<%+0+r}M;C$@$EX5(i$2OREmI-idK z_xC7};VPy#K}Rv@hyX7Biou7QK=JE=F}aFz4Qt0%xH zIECK-U)#C@oCJLc;2ssw@kN?vbVYZ#eb+CmtTRlC> z`W=M06E-%vG+6~-)kZzV0aLvnr^v_V1>E}wr@;EXY*qj_@#jejt{S>=R}6vCV`!xW z;vpU|F!Q4g|LF_=$Mr!+!FdAP6j-DC4F5@85TFKN4G8W{H}t3b4vUUx3o^DAUMcVy zggoLvRKhcx=l_T||Hcph6FH~o#NT&>wuDa$xWCl79Nf2D;PIvC@(CDAw5-dyx6jzg zCs=Kv5sYw%(P?I3Qgo-dcz|p7L6&5ZUvX=7hiQBr1wzlxb6=2>N&)6xX9hYKIhD+J zjHN(0XqQgy8V{S4q2`3S&R)Cys=Xb}%6pZw7o6LS;t1)h1vlembQ(AYgF{1IWNL0! z+bnt}fmj$x&mg`4o$tkZ!mUMv29fBFy4IZlYxe2=S8F&w#Z$k(zng4XJKpzz)(t{d zNt6p^EDCy80hQgf6TIaC?w*6Qh=yF~_H42RKj6*VW)nKVPvB>GQhLz7M;qPbcVOCa zIi|OUx4^WF0>Py70DH-l^Mz+%I$xQ9A#8T#6*CK(6kV(F=j-*S$2$+RU_g@NJPFeg zGQ%eXsNe?gbt@BwnIaK$K#q%fikp5!bIs9lBK0@?q)8(8{qz!vq5X5QD*|rGbL68o zt(W7QR%t58&GsKQs$tg%3*q^dF=2}_FiG*Al)2)(0_q(B$nSggbBePYd=`&3S@>)` zrywFp1nwxX*g|>|`;?A$s|Tjzfhev=ojMg9f|LFB%KEn7@OG)W!SOZaD1)1X`OV~} zsIX3SQcN~&c#B(nnxEt3Er4%^H~x+UPP(V;bzm2u))u;hHos)w-_z(OyE{g%TBlNs zE8&st&xO)6rOFXjhkwX36Ripy#^5MBlj-JiP10RUmC8de z?dbi%sP2}b)#lw|1NeK}j1ahU%Epx-K&`pl}!#(*ORgLE+ojrf@iH+`Q(&W9U zjLxF_3agpLDCaXN@fB@Ov6EM0S!l`2THX~dyPuqOT(1`$q48x4X^LFe1`(oy7cV|* zZ1LS3n)#Sj(9keKWDc*xjz8r*t{{@6-9J@r8(}#O$)7^dvs|mc*lL6=jR@c4*t0^J zp9!e#u$$?W0s*kOA`WYCkH3X;3bUme~bT3y2G*(9Xm-`PljQh_!>9_=q zn%hKe?ey+ltA>2{-I|>!HysSv=z~U7B@b}9Z9OF$c#iCj9IJlW8r)|p=E~#5^W*tB zQ8xCFvPK=KXETvi;QZBR9cVnhx_@xc1P@qNG8XXnRaokFph)}-2 zZZ1%})sHID=H#+`pX^#pTY$%R$@$i>&!LXWn$(3pj%12DM9O=lY%`QJOu)XRKCq0Q z>@2_6aj4YfIb@=c#}aizRm8b?@c`Xyu@@42l39whwY~@$Fo@2H*_^epv-1`SYD?go zY4+|)>v-<|Hou@izb#Qf4)}kHk*hutKkliT72v2nIeeIf{^Ar2#N!>?>`*0%tK-|- zxU3joUthDy84A*HZ*%v{3(t?I{07S~1NZf>Yky%aBesChLvasq+pujnQT`nEKO*2=f*T14RGn*C7I@ss`*X)s9P2L`eujIp?LDcGGjh=<6r5ScrJ=uOC_S}zX}l3#JG2%(+FC78JMKwxP0qOjhxTP}w4>Q1N)$1rx7Nu< z8<4CXlc(i3RAeiBU%Fr|yXM!)q|Tz~i9Qp|sZ`4;$c=aHz57!sZ-NSj{&4+SEz*+N zn2c@pneHQxFP52%AT@uz+DBWcrkL#Q?wH@~l_(%j;en5wQBt&MSenf(ZqaRPl{4_k zCP1q#aQe0y8*>q{P<=U>B8VjXax6bm5j8_cxZRvOp&NiAJ?W1x*vhcnX-4R~?evjG zqi681pBA8Ox4Mf=0zZ}yb#)IP&4_>22HC49m`So~p#Z5PByxa;Jav0DlMTeeCpQP{ zxzb>PDZpk?KwPRO!%bXgCo;&9S8d z0+ct;88C?gmxbZ@eS|(F*Iw7Mvu~v~_nbiV;$`8i&8oPFv7#Y-PH5fGPxjF0;l3rw z?6;Mderdqpy7YBF5gP9Sw;Z!JwoJ?kHH7XHGq~SXOys>K)!de-ElckY2pg9j+8atg z^c4HrPZTm*+gQt|ip`dGtZAn`*xn^1H6tDRVHo6c{0}CtN}+9?E9<|9asB*;1%B^@-pMhZUH@6 zWpx7?#1hHfvfQ$z$8nAxtxlr%!%Uh4IZuK>^O~GnjGJ+1)KuT{T;Dm6r4S@Be+|Yw zeV29q%YSMC*qjNU^%Zeb?XY9}BQm@mVBfgTm}X6J3NCY$iPAE%vr%FSf>(%bmy_9E zTxMM*e@wB24zIc)5UAWmjg@Z5VU=_IFu_Bt?OQN=5Dm~p9f$dXb&8R`Vsq!8`wmF1 zn9ZyWxdrAHZ;w%-;!^e%4<~n)!f=3bJ6{gDO4W^ro*5HNy12EDv2bW@KOZCXnbS7sE4#Q1&k8L!Z{)sK2>*2%z8@%Ik>i4Z zwnb)?@$o?MK@9HdKie<#>vv+Tvuo7iOS4Hw=7CsQ_?}CcE2ohpGp%Kuld1pT(7Y>kGJ!ItJ)ImNgI2Hq)xO1B>4s05ZD#t4cPHLJ>RsU@F)V#cyXz=0UuF^rbwSrqpmRj>;9cY_3$JwGs$H$yagWzamp|5e; z#k3Rj)oPQPfvhzi>ivCs-E3tE9h=9n8rL^D$C+8i z%6??9x1-lXgh@X#DDH;$h_}oi?*3~W7F@K#4*qtI0melFdWKircdA+~n@{u_FkaYX z4+-(>0x)PBK~g(f15&4E4RREqDB{0T#&k2IV~jps8?s;@Som71#Sf6YOn58FC7enL zpJAfiA+|yAce$1SCgYCl0J{0cTRd1-p<=owTCp$X(> zZXTAtr728Oa8}~d0Txp@3LE^?0DAXrhV^-1UP+HVW$3<2*X9JP$Os`4Swe{9s(2wX zAPGp>NF-m*?Ig<2vi->?K;jd5>Z{`{BYiYW+}T{~tqXMH(~4Td)AZU$ul4s)SRyJ4Q5dGy#+ph*$X4+(t2i5j%qw)Xa>%M;CqPhL)l z1U_Jm!+on{u+`iQr|f6Rl;DMQk4A$+pE00o`qjbJ3yCq&gHE_gR7JFih180I0adfGTQ#fGZ|XCN$(U-rNBO) zCoL8_iJW0vlL$BDyp9lw3(5B80+e~GI;guD+Xx)ohW(Y5z_vC4`j4>i3eEjer(IxjqZBu$l;wHYS2Ax2GwW zyi7ixP@j7yybu0qcd4Zr+D8Ggtj=L-4uAdRg)mU?VhR24(L_cy3!eiX`vXtuTHNUN zTg%;D+RUn?oF4mcQOFphm|dUg#3@w@R$~g{J}IE)^SCUA5ORUUmqWQ>&Hc9|MJ>)* zQ{-Vx-fDynbTo;Q85m>Q5UPooJ89NoRA_>!-FWL@D@BrQL^!M@f06evh6x08P$%lv zJEA#uwZ+E1E=Ec2{8Iek+Au~Dtua@)>d{p+@#h>i{0nDmNJjrN7&YVU>oLn)P#$#(-Q)6-qYq&)-A zdD6;cUesKz9WYo4?O9b<3|Oz}M!%`u1F^5aWksK;?_9GNSGd;Q4#3!zE{nIL&(O%L z$seY_cwX#Em)mkSIN(PemlM!zDb;Ak!VFBZ5E>E;^<3sS%tv}S&G9icS3E`0AiadSJ!F!}Uw&ZtGypIaKzxE=EVd$%)NwPo0KB^9d{rvRW)|Fv3!zwc* zvs}ZG2Z+1X>n%rNukvBSaD*u#$yxP^Jk%54d_Xw^Ugqz4L{`Pk$V z8Cz1vC;}mKY3R9rtH zPgX>~FXd!^h@kgVYxZ_GTDxwrb9;@{VB(B?p3so^xpyfRO5{9pLkXr}RimJ2VRK%# zdP(wG*hd!;RSSN!x>>^l&g@Txn5^jPJ?G@Wnd)h@oCxel(x^ zCsEufy5;a1{pYXm+_3cx3DQ}|y@HXRBLOVu4L;dIx6*RNVuxRh`Zt%JwWvh;*Y?gY zJ7K3*3exNN)N7o6ZC1C4-9Pi$1Zu}AKCY&F>nORuW^#Are!`KF`s$9N70pzKMfC4C z5(dtT%Lc^7yK$?HmDBvi*=m+0MfcMtNNTg3S6!51Z48p4vV)oucG~QnUfMqy9C{T? z7M$O@m{{MM9nlcBJgSKPcHPE)Qe;bi>et(2DdcL&={5zo!_k@T=$}U12Lj>dP3rboXX>(1%j00m~Bjh^xtN~PD1Ka6)0$=V*ynqJ=<#$w-8 zE>ENs%VLN4k&ZSV)M|-J{!%)8-N=|3(Is~=7mfL0*F-Up7yT6i>QG|Xp6{#om z6MefAee4pi~?n}SQFNfITm)do7< zA#@dOWl+2~hE9|FO$w_8b^_67dnWz#ZKsDdZ?)AeWl){$bY8j)OwD_JFAqa`4e+JF zJ+6y6Kdi84*LYF({R%-A`(S5Fep-O=gM$=@>7olJT&!PG(nd;JqM`k!0*(VUEZcd2`&}BtQlkTx zQy6h{KI2-7LuvM$+sNwlgtyOpH7etxfY7Inku&zwW5bp3vbWCSqbF$@*GqWb4MQZo zT*vFYrv}{8cuHfkhj(jxhl+n#7rw#N^}W2LDL7R@yeRrYlTLuH%pRf0WQ`AZ$o6Gp0nvazJW1v!`E9juvLm~pb}Xe!;}VI`--qd=TgxZ$K5f^o zpjng??@6|Qyy(Q#b0!xAx!?QiVo25aKy}n5rtd8hb4Mqdd5QzFRiid^L>o0r21Lqz zTvYxj(nD4%^#%4nw-a4_J04g(g>ReQh;XImt8V{_(~`b^;OK)YzXl!=Qow*K{yW-o z$E;#=(+(9izPsOK&&Ff#e5wp(%{qDHlCRnOv52qj8Hv~@_|8lx=;C1A3O-)}bm`CH zy%M)e&pAn5+TCo}-c)Ucr0PT?Gn{u)(2mBg6`g3IDad4J5dxJX{-;`~b|t8;Yc1wZ zn#8B)<&va>b)x~()$_pu$u5;v^dqc~?!ttu$~ueiSv|RWVJ2Ci)Z^$<%(0Kr!h?Ic zP;{n7&D3ZHbwQdl$`fyYAt%*pqdKrBD{no|X_=(4lakT-Ia8n_t!^@M)Zb;K+*XRK z-~pvXj{nQ12r<~aM9y1Cg;zz=G-~2}mYTVV1Zy>AQB(5dfE#o?oclk#ig=mp;ap3Gl$r%U< z!IX76%S``sXIAvXseD)Qj?}l6N`hmFNniS=LPs^7pd*3N&neCq>)zzhW@Bbna?*HL z77At>qX*$q)hY&5NS9;r$Iuejo3?cy*T_EQMATLpdG9>>M~$0bVRVhMEDhO2G0GBF zpYAg$(EReFOwCtZGJ7+-5bKsmUNVWGefX$|MirQ4*##aG2O$KIcYj_x9^y|;tKSl7 zn1nC($V5uY~7uU{e&rW{DDuAParWhMbc|F+O%Nh#fRHii4pF_ z^{MA8`DI&C?Bk=<_2)NIov6ixsA@v)*ua_Q`+JORB3<@_b5ZEpf#r%#5I8pdVv`dZ zw)@_IWBAKlbVVf$mm3-ud+GX0P2<)j%%WRvjpFk5Ip?}2b^JucmmZn);gaV|%kcRW8CvD1i1g%OcSz*w; z6lj)eVA|ZAZ*gU%syHF>!m})r>I6UQuK+Ms3{X$QB}b zb!ptm*Uzs2PwlBfeLTI=nwfdJxTNGk8n}1;-sr9M)Tkx0A)~~EQT^cl)^V>dzjho% z3d~6JLzSvSKVKd_deCD3d=&7~AX=kpO1EBke&_^+F9j797QE69f}m_rac2|?O77e% zs`nO`C_61}szG11`{H^SZX~Md0z!+7{IJ4t=KsZ!g`ET*=de*BkHQYp4U~ASbf!w( zQ=79depWxbg%GR@7)4c#f~vfPGpZK6GLByP11)7t>pwrgbuN-a?_CVl*S|UI=2n{s z_Ip}qz&?tWQQCU+j7mEwmh7(IVYMrSz;hbDfFgD?vT0bh%yxBfC5xOKPE z?&pD0W&hZlwqoTq>hF6HVryX_oTr5Q(i*#G_7XliGMDcJ4Y-u5E%m&oqyV8{=QULB zg!Y14Qc51lx-`_7(=`@r`bHKgJ#W?hYR5+@%#Kqa5}^lO>B=TJ-y{}#=45#Dvb0m5 zSdESLjl98DHs0)wFHW^=TnmuOBv19#f|BpiiJo-qo%t?_yD?J`r&vky>AeI#h}mRl zlmLAy@s=*gh$T~WrxC|D^`R-x3ibe$z8Qz+r!mon zYl%ysg2dl*KCM1_1}>E(nZJqCS}9(hRiT$wwu}J5vUI4}wP?qW2lw;SldACF9xGNzWvPovSyMEmGISE^fI`VFDZ?faTR>5rMZdoh^d3H!cz?=L?E zK^-=z{{{}l;XONcXo&l(XInzDIEkpZQZ_x&95r2Bl}wY~0RdZ_ zB~T?IcwBf)qh|+Oc`T&fH#9>ry&@4SA5}$%Fkz#lsJoNc#?g&{m#KYA-=bT3C%8d; zqi_fEX>dE)vP$?RsL6^oB`tC$!v%AA%wsj{CP(PqMd!3l`tDXb##4QT|7RFw)9J)i zpFrhvM`4nCvNTq!U7Us-OSn7a(~fQ$yz2u4;jCM1DHVr6nXvS!k!zs|z`fpY{`^tc zePSDtnO*DO3b?9p;3R*4aSSg4aBu`ddN2sgml_^#Xf8;_PgZi_dPiU(U++d-f;u;y`2LFMhDr2K%daz4kaQNqtA^U=E-&gr2dXv zKOZe}6&ymO>^%OLDdP}3Ge;Kx?*aes4gPrqFL6TkiPk?W~S~gSfPH*FT zj3P`FqS^*bm6PaI4;9_o)Msab)HjKgzXQRy>)Z0v=Pke4@GmVn0+TXdKnkyk(xr^(k8W1^ep9S&=XR50$dj6Gpz1~;8+I)~& z+4m>9gSxT%L!8z}(h}boG?$tEuAs*H9pvp3<~zB_YRX=MlYqhCZ$B?3W^hJqIyrs3$UHI2O`)?{YOp&Gp5pqlFqk0zcD1n zn1gZ9?4l0jp^V-?6T$sH0E#m78Sh>mRo<--OGtBzup|SK_F(lPl37;8&=xKEhF>u zH!f?~LD$|w$-c?bkD}phu-^Twy`~`3vOEG=8DzaSc0;ap8yB(g;)C{~t6#X-9&EhG z@;}2I^?)K`{)nvo_#wcTO)q-k0v8*O`xq|Z;VDkjO}3=QgM(-3W^PN6AIAZ8o3fFf z2Bo7aQkAD?AD`vhKf0&_#5=<+O zqpyLpvpbp<9>1-fl=TZj(GWiA9HjI3H~ADxfgq>IvME>KleX2SMQHdJ5#)eUt5xtP zIaV8>NzC3WLX0^W=f3VdFQk;I{rEC#y9+6ma;=;dr1SK_aZkvozyneM+@K^sBrn^; z2TWuqL3)3dlpNc;s|YO#=hvyaWEY`>*Fcj#J{gV3%t{H-o1s4AnA*A0(&Q{mr&D0vx-ZEVWe)sr>!< z7>mhc+lYALgIG?r@Riw5I_t}mq?5<6U%^|!PuVyH!@!>Ng@hh5@-ULLgKYz`>5WZI z&IgX15;QkA?=5$#Q`tB2?<+|qB_(>67gyr7{=vwH*qy$M*99X;BBnF1NKAtn5jWHe1Sx_xT_O=OU)K ziYqG8fGL|EdOYDAgT~~G#`is;em{O3(6s20ORG;b0~_%pnuK+NgD$ul_HTDjz330v zczyj~)*e?TOn&!vu?G`p*rtu#$m8<-R6(w^ETw1IQIQ}x# zh1Y%TtTYkrrOh&8ROApM%Vzz+s%O*}A&jWe+VTicwe2Oo^SH8kyqs5(@@{ z&y#|?oji^)UIahhuF?3rVR5N~ILF)6k|ygS84?oG3%ooH;jdLT+<>NBM|CIl4 z!QUH`qyNxSk(l{$)z1uCIt6IyN92ghw3(Y7ykg}g_T~diH=S^w?0^_^soaM$PIX(k z)p6gB_vOpb$F>Hcbp&B-2HJJDKKOqN?seCz9Tr1P+l^+qf`ttfm z<;~MtAx~D-zWo8EuBgp5zF9m%ba88`6Aj(DNX-n033bJz5S=y1wJPepIxl)>k=G9V zUT@uk5;y+szEU&QO;?bX%OEjI$!^_ivK!o9P5)k&>)ZWrI)^;41yXpmb6r)PYb`@( zB@G(=BTD{f(gvmjk~SuB3Znm<@6q@33pW@nYzfo833uDKH_bw(I!&hB`C)L1D+B?x zYiTpjl)F1)`GApd63!k$=v%l+=ABV(7UAKZ>7d2UboRJJDSDK)lGKZI3|x1-`v$R% zerHk}-XAXV%D2+5Esu$c{hp5ycw5n-^PSK4vpk>Yxu5&KWmfe<_u}N2f|=cJo%W|sXNQDAPvUX-_}o(E%#wLnc8l2s za~pD(d@KU{0^z!0DPUKaaPZt{m??T;(%+gck2e_~Pq3>B5efKoRoUAjt?ww^@#dohRbQUXqCW45n@~w@T}+A`TQRA<+H3pUbZu_vhW3(T z{rM>&pQ(zfc!wAJr~2kQ?%-P^sCTZUb?id!ubNYmBh^q1!Btb7?6tsbCi^X4YAdF7 z;A(oCJDeTl9$3&5nHiBU1n2{m-c1RnHyKkq`@Etes5Yw_c~#l068jEZX0L3zN3!(7 zN^yMN^0Ua9Hyp=anGPhmPxZZ{&IJr%aC&=Ra9i}3neOxdBE&3O8062eECm5^xj-=_ z2edIVX}%}X3#G@6fCq=UC%oLIFp2W@>osoi9Sj_+*(*pop|87602 zX?3FFU;cWG#K;fZZT5qMb_2NA3&em0UQ_W-;9GZ{1ENp!TtNQ+iqQ@)ZPs*?PT)|R zw##ve#GaX4ipJzLpx$=?hkMi%L&`j=F86d&!L47J>ebVq%sutt`vH%k0}16}(5sZnyCFTE1GSpqm`(aqFqr6)n7h>#lh9*7Ack zV+GUPl>TTSUYI`E{zdQE>J-c7H$mL4eM=vXy8fzhUc*S7)3}W6+9s%MkIYCN?A8;^ z7>8h^XJ$K=@+qS~SdkZj#DWOR#B(msmKyfrQ;N8Bxe2$SWcF{w+F;7+CHFqa{RBbx zod71`QJQn*-Ijg6_jTN%5TIb)^Ah30frrhhMJnjbC#nc|E~xE39(D=eDSA?HusZw%h1b?XbZ0F74YLNFaZ_q|o7qUo{Ki zB_|BY&kGR}VGu$h9P1!Af$q+JZoIQ{V6emkn+eKQbAN{_*+f~Q?312X<>louI=J4# z7M@{4r3$HTxS>N<2i|E0bCi5DMZ-cvR(5$fWiNL$u!0VcQ}G(Kj(C~U?7klYVda<_0LONJ zcg(B+sBO7z{CQ#5O>$o2@9*2Tq#Ka3Pt$uE3%eGk1_x&|BNHTrKQNvYwutH+IVh=y4jL#|#pl*>Iz`zwu8|(6EhIp!4Q(hSlxc za5H`pRHxO9ksHG`Dx~+TCkY*s?`bW+BiJ4AqafQdMElBWK}NKC#3Um#E9-FYC_>>h zZ{2&$DhLsNo zL9{P+fX&)|deTPpI?UGmdk>eZ$1sn}Fu{)eB|W_h1!vjz5q`iB-7DEE z2g|c(A7A*~2XrO6*%~B@BQ0u!&52*Boun?-`BnJ|(QTm3khk?!f{GMQtb0#|Yl9y3 zJxKhPu*t!ryZdv$k+>{%0gjqRi0dOKgZk!VNSDQlcp=|U3Fy(X^!haZ zXP&_BdZQEQ;o_V3>zcP}3V(~MvkEVxV0X_XtBV5u7`X)%q68tL-kZ_BPn|gibvPq= zKFlbW9)_24)QaDVxC$I)2LhPX;qZ^OU)iP=zcLWjtd5vGK#WXb3&l1J9|Qwnb)C3Z zeH_#!(mRkMc~*uL0M9-m6LRblHv~h)rQl)Tp%-7D?Lu)mqlPva`_{&=xBPJFU$t8a z2Vh^M$O2_(wf*=-a`)XmDKD5Gcp_D z?TL3ZuHS?5490sIQ+EH&(OFJHD(s}F(%k0EIPPMCP?YNRyZY>zzWR==^sllQio;F& zpg5G3;&c~c$=|3vw38dGETVLSbX>V4&pe5)tE(H@+qQu_)QJ6fBvX{DV*02vLnK4X z&GAd9lslToe>!3;GTWtK4_iC}Y}_Ej z7eG!NShf@PnX_z9IMOV_#R>Dz$?5Jh&bu;!)sBMZ0>uiO6yv*-1F`aforL~wmN&8Z z4OepG6YaaTv&20eT_|G_zF3F?;atk;hPy(S53J9-tnchqN8R>?$DwH|6&dfE#Zmj9 z6xNKLjYe}pM~4WkD$~m4{;9_M+AE)DIj_{cfz2sFdV{$ph0=zVTKV`WB;}+|QJ?q3 zCvmVMcwlUz%f%@Q6Rt^{nLk#gAhFkudDe2d`m8CBjt>0J2q&^|voPT^(NtTP#fs*N z;o~f(y-?$kn#$+_zH4+81q9yln-44MYY}YMm_%kbH9&Pvgad^@O4ciYo0JkqwYt2D)Y{9>drm2wh*{(saP@FzTfD9y3P;^My$uo z=*NQso|!b26Ct$z`V?KHFEr54_Mzw6g+P_Ywj_;4>%hy{06L(5>Y}P^c2DrW(=RuW z9;SrF77h4*s~-KrC_)-?<^1=}=rst+)@9@In8jQKk+nXQ$Ml(?DjhL>7z>J~qW|En zjhKlZml^sOePZRX!4+VkKUcE{zN`ik!Hj&Ls8k^=Makj=!HACvSPB5$GEXm~?jULr z7F4>Mebhn64$Q`iZfdh3(y$Qr-2{S1L`#OWHJJPN2hGAs>nNf(??QGmRCRE6cmH#C z#gHYYz+R7_Qua#{Qo(W|KDppVI-(HmL!KOk*~lFV%`^nsK+JJa!Z1+;nrYSTwbwP< z9yZ?*J6+3yt(dSI^(pXOOf&V9vx`9(P^^pNPbV2D<)P^AN+=JqXcwAaLXD*$1SiXG#IBHtV+Q ztJ=)2OF2zr{=N-oo~Tb_HZsAEU@eRz29wKnu<_-!%fv%+aCTqdid%QSL)6NQ_Ie(O z>NURyF=MG%wUx`0{zJ>{tgpuBRs8csx@ezjYp&fv@j&$CGYJ32j#|VZXuGu}s3A<# z;bYyZ5>!JpaMAcvuf5ZhIW{AxOz)8s>)nWLXiy-ZY06IA4$+5{|o>r;#aC`&yl7G~MzaObNj`?`y%!mO` zDzt*)zr4qegQRVocQJ;V$~7ZTg0>Oy?YinYT#|bdeklvBPkUP~W?};Ce*Am8IG%|!~-Vr%c)hfe<_W8bOEWD%S$}@w%Qm`ObSXdKEjENiFYEb=D zTwIJIt^fBqfuB#^4(~_g7gh?(eqq?N63@>aiio{rahpK9Cx()N1}uR#E&mg86hHq^ z?;wl`;w(-b3C zY}+U--?Gj z0%KfO6mdSSG$V?Jnm!32rU9*kD%++i#JOr|{4e)?KL`&T1wVo@h~1~xS3y$s+fv^y zB?zyFx$jW0;f{tXy?rUZ$eWh`Pek-8>P2>T4Ad^df6g+Yn~F$9w_wCVbT*X~POHqQ zaWTijgt7%;n;KD0q`U6^!Gn)yLGhI4GFYh`uyWhs_us>R5;!KhJIcFK&hT56xTmrD zo8wi^((-^8rR@3DB>u2NB-ZDw_>FWv0z@5&@I)_{>-q+_OqKLv|8ls7siuW$ z9KzB}13wZ&({T0Q0@YMipRQX%Y3xk%XpTF?q)3M8-MUo(RFSe5hg5cPi-`%qG}lr+ zXt3t`7rp3r@R1wbq`Yx^zktZA6u(wa^1B^1)u0ddIu&OEpcade2cjK|V zb>X8>Y@!h9({L-BGVB!G{c4ppL~0+BWBA=1-)jcq$J(u zy)2_z<#aCr@Z;-`!GLdES9_WvLNw9vnuxo2&qxFT=ylP5*jR^_6dp+*Z6tS98{RVg zcb93-=&#*9UM)jXP*70k7qO4R_~|sPDL%UWbptq3o@TGXM{Cdbj(6EUm8U`g|NQek zG^Sv4$cX>F`68ns8CP@pPf#seaW813{)Y3~U5Hk_Y5?&e3d*OuU7~Q8v?DD^z?lx^ ztGMyf$@eqOqD!f)$^uBahjY*!0p~K9(T&(1l`s}4bseOTJzU%3K~r%c_h*A#uEcoB zKfO82!LX@JIbi(6Sm4|4KlLwNV5;NV@m7ZeBWKrY^`$HxSGj-D%t+SIn7JG&koT8| zgCTmMvH&ybH@#W;^ClPDA%?WYNC&?{4=9CEdOJBsW~zN9NZVLuVt?bC4-GOZ&Gt1Z z2|EN7nx9*>`mLazx4!97_rlY`PNOQc$K$;78B>m;0LoYd`VHJRjLpFteAMoY+kTB< zz3kCM-a*@LdCBX_3ef7;m|Z}!^H^^%!>QqX$HI%9k66mRQNc8v@zw50O1-F3BMX$s6(K|*|JX1ZvYZMV&-=RQx(tCk^-Wj{p zqNx;vASgL$eSZ8 zJEnE1lbk?*k6A7lcC`P{IQ8YOX)35zWYcMj^$}srYKhgTFTKM;y5D+P)p&X0<*NVi z7uk%8)qu8}8U7!1>fIj}m%Y3R2%1QiA72h@dyLmpvUIGuNOPg@(NMDFPR6 zO&R;lKCq<>4g_j%6Bm?(D*)=V#A>7n!GHnW<-DPMzdfJ6Sg<@p;~GD-PoX1x&>gEQ ziLja->UP%OMlKcN?(; zV$dYpuuLqCThkKVal5Dg($>yU`h1s{U12{1yeiO)yu|rh{3|SauA5@B3S!PeK>iNR zrL{8>2Sd%ZadVXc1yN{~Qby-`i%9i(Rz4MvyS?^4YpQ-Bp1L{p)!MPmB$lQP-NKUc z___~WB`r`<*%=86r~}aQ=_uI9&~!?XplK$(vYzz4SpkaZX7Oa$Y?{+4gH1m5eF^q6 zqD2i8!aL|zCzRm#F%{_E3}62nDu4qnEQ3GY)bhsWPLnd|q`Wvf2A&0Q+ifulf*Y0N z30OQ3Jc1`BjsFAxlmCJLA(?de7A}#aC(x!5U-gsiGS(u4@lxuU?-F|dJNEbamPlK2 zyXs(w;)bix0R}43Y0Xo-Ia-j7`2{cf%kZY2t%EE`_?(wuVh_lv{v|NbN`az z*Q?)dX{=3uu1U+vG6E+nIY8Q?OG`DZz{qcQyt8T6WjWu&)8qB3{cx0XrNfK)of7L` z1-abB!+SQIakCQpA`i8C-a(s=fy~ezVEjGeK*Vb47?L8e24XuiEth=*LF1fV*l%tz zm$v%S^`*_rqc_Wdq-McY;@qn$`ADf^HZsCywOhu+g2Qk2>(!+^<;3hjf0w>ux7^>` zB*wb)$lI^@7f6#zzVyGodeUOsBr9DjEKZv{5=tGTr7bE|Sy224q@cJHnPU^SMKOE! z?6C)j#dP;#FUCd50Ox`tD*mSS#Y-RNFETtWgtL!cd}}tA*GaLl?w(&l-2Vd1BR%GF zB+7988j=Zsn>CwV?2V*$7$3`SS<6Z+W2KG>cbyp7=PyNqMeDsVjO08dujYeBTxpG_ z+eGe`gtko>ZbZc1Qb$L@>~B)5od8ey>=}axzsn#RpNjQm{88wK4>O%~+b7mP9mNO9bHFB*SwXc%8ih?XCs& zVvn;sb{Woa{wksxHd6f^+!I~VDPt2=koid6*xR(vpnV?fhWwYkX7bPmS4di&p}1FT zvu+!dW)v8*${O6y_2G1Zy_HJT3r+BW&`Np!CqLJug41Y*+rk4^hN`9Ca%Euy0_0!g zPhnx$hhiUk>OEz}tWk$w!xkM1uHzhWbAj2vLKfZXu)sm$d4cnI_bmWtCRERj| zHj($PZ9M9THR{omzSC#Kc&SH9?Yl%dFTy2{I*Jr!g6H*No6vHJPVI%hU$cT^<>NRu zNFr)t8E!5CBtmjP_QGGBZj-ExtS4ao@@;X7NIo6TUI9Ltn6K$(fCHS5z}m3G5d|vm z2Y7mvnvLL39||^<_v{kDc4yGNX9afaB8G;HIdKj47xWYfcSMdFC@S8F-OrY_`fF&; zSb2`{Ay+SWib$eL@u!^vf;SNK0059I5aDK9VX1N-W$a5xlQ7}YMI2nR=frj+A9oY4 zCZrT+{pxl?>>3O!M1kis5+p--VHTu*ITeQrK|H%|%AL?eBHWkbum;~RNIwtO8G&_= zuomD#stFE)gy2y1xd?)a%|C9k?7?hYEb1q~?KJ|7zR11oiXfbyV3zEalXws_E@a$r zU#JUyZZjY`sa)(UXXNCSp=tsXHg@Pf&CunhnL@ulX@eD12p0@vOQsGVdl;vNvWo^H z9djxy007^fQ|+Pq5HEF2I9}HVM&)KD^M#FA?B#+UN({8~OBjW{&jrnb^fa4Bm7bD_ zfFGSvWUXK~@YScG^biY~9~Qwd=IVMvO4^|RiKl^c)+GzC99*G3WCAct=Y7(|UKg+$ zhbv1Pv`WIvsUpf^=+*Wq75fLA)w*IPMi872IjHPJW@J%tv41K+I&iT@6rq0IT#@#0 z-2|pmy@BiZwIc+z*Uqt;OR)PlaR?H04#E5X^dtR(8M?OzhcrqW7QYVO2z-LA)&kd#zjV{MqGS-(1iLo{ zA6MpCp(zDM0GQthY}}`hcsFJs*Cqe?V^h}5G{P!vPuGg$^Pq#mJikUld8Jo6yA??} zgt@(@1{A>c@@$=5ZnMNxBQU%^v9r(PM1SK=mzJmxHrCdPp`>62jh@c3Z6d9>KW1A? z4=xWZj4Td^5y5uzh*gwFvy=;~`SeHx;A>HsrQ#J+k}2S2PafQ@s}&0e2vx<_-G*IF z`f$%PdZm*zZYc{cgAb+xTslN1)4c@fTv2M>Cn%$_*}b&M<=CdlewW4szrjdRJeD9# zXZS0$v#zhUP|tXeA8=Xq**jGuUcj2}TTmjRiHgLc!2oLw?@4@6P1~7=YaI^snRm;s zVxo&S)1x}FYa+$7?S`~r(e>iK!1YyO1$oKMzy$z=7yd^;FBlX`tTE>2o7F!wV*UR3 z?#Gjw#1TWy$8yXd{<2)se47m5clx8c$) zMG9mv$b?|Vb{hc)MQoqNquW0+qkkwq&VZ}w^Ru6z2jnvqhH&-D!~Xy;I0!$%!e|?K zf_qnNJlpU1rz7JXoda;NO%As6vJY5oTu=mcS3Tw{@YOh1g`V7If0%>2-C$^agEgL# VWqA48DR_Gh{Zq!euTEUK^Isy_PXhn| literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/ability/stage-ability-continuation.md b/zh-cn/application-dev/ability/stage-ability-continuation.md new file mode 100644 index 0000000000..8e3bae38fa --- /dev/null +++ b/zh-cn/application-dev/ability/stage-ability-continuation.md @@ -0,0 +1,232 @@ +# 跨端迁移开发指导 + +## 场景介绍 + +迁移的主要工作是实现将应用当前任务,包括页面控件状态变量、分布式对象等,迁移到远端设备。页面控件状态变量用于同步页面UI数据,分布式对象用于同步内存中的数据。 + +## 接口说明 + +迁移提供的能力如下,具体的API详见[接口文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-application-ability.md)。 + +**表1** 应用迁移API接口功能介绍 + +|接口名 | 描述| +|:------ | :------| +| onContinue(wantParam : {[key: string]: any}): OnContinueResult | 迁移**发起端**在该回调中保存迁移所需要的数据,同时返回是否同意迁移:0表示同意,拒绝返回相应错误码。 | +| onCreate(want: Want,param:LaunchParam): void | 迁移**目标端**在该回调中完成数据恢复,并触发页面恢复。 | +| **enum** OnContinueResult | onContinue的返回值类型:AGREE表示同意;REJECT表示拒绝;MISMATCH表示版本不匹配 | + + + +**图1** 迁移开发示意图 + +![continuation_dev](figures/continuation-info.png) + +## 开发步骤 + +### 迁移应用 + +1. 配置 + + - 配置应用支持迁移 + + 在module.json5中配置continuable字段:true表示支持迁移,false表示不支持,默认为false。配置为false的应用将被系统识别为无法迁移。 + + ```javascript + "continuable": true + ``` + + + + * 配置应用启动类型 + + 迁移当前只支持多实例应用,需要在在module.json5中配置launchType字段为standard。 + + ```javascript + "launchType": "standard" + ``` + + + + * 申请分布式权限 + + 支持跨端迁移的应用需要在module.json5申请分布式权限 DISTRIBUTED_DATASYNC。 + + ```javascript + "requestPermissions": [ + { + "name": "ohos.permission.DISTRIBUTED_DATASYNC" + }, + ``` + + 这个权限需要在应用首次启动的时候弹窗让用户授予,可以通过在ability的onWindowStageCreate中添加如下代码实现: + + ```javascript + requestPermissions = async () => { + let permissions: Array = [ + "ohos.permission.DISTRIBUTED_DATASYNC" + ]; + let needGrantPermission = false + let accessManger = accessControl.createAtManager() + Logger.info("app permission get bundle info") + let bundleInfo = await bundle.getApplicationInfo(BUNDLE_NAME, 0, 100) + Logger.info(`app permission query permission ${bundleInfo.accessTokenId.toString()}`) + for (const permission of permissions) { + Logger.info(`app permission query grant status ${permission}`) + try { + let grantStatus = await accessManger.verifyAccessToken(bundleInfo.accessTokenId, permission) + if (grantStatus === PERMISSION_REJECT) { + needGrantPermission = true + break; + } + } catch (err) { + Logger.error(`app permission query grant status error ${permission} ${JSON.stringify(err)}`) + needGrantPermission = true + break; + } + } + if (needGrantPermission) { + Logger.info("app permission needGrantPermission") + try { + await this.context.requestPermissionsFromUser(permissions) + } catch (err) { + Logger.error(`app permission ${JSON.stringify(err)}`) + } + } else { + Logger.info("app permission already granted") + } + } + ``` + + + +2. 实现onContinue接口 + + onContinue接口在**发起端**被调用,主要用于在迁移发起时,通知开发者保存控件状态变量和内存中数据,准备迁移。当应用准备完成后,需要返回OnContinueResult.AGREE(0)表示同意迁移,否则返回相应的错误码拒绝迁移。如果不实现该接口,系统将默认为拒绝迁移。 + + 导入模块 + + ```javascript + import Ability from '@ohos.application.Ability'; + import AbilityConstant from '@ohos.application.AbilityConstant'; + ``` + + - 要实现迁移,此接口必须实现并返回AGREE,否则默认为拒绝迁移。 + + + - 示例 + + ```javascript + onContinue(wantParam : {[key: string]: any}) { + Logger.info("onContinue using distributedObject") + // set user input data into want params + wantParam["input"] = AppStorage.Get('ContinueInput'); + Logger.info(`onContinue input = ${wantParam["input"]}`); + return AbilityConstant.OnContinueResult.AGREE + } + ``` + + + +3. 在onCreate接口中实现迁移逻辑 + + onCreate接口在迁移**目标端**被调用,在目标端ability被拉起时,通知开发者同步已保存的内存数据和控件状态,完成后触发页面的恢复。如果不实现该接口中迁移相关逻辑,ability将会作为普通的启动方式拉起,无法恢复页面。 + + - 远端设备上,在onCreate中根据launchReason判断该次启动是否为迁移LaunchReason.CONTINUATION + + + - 完成数据恢复后,开发者需要调用**restoreWindowStage**来触发页面恢复。 + + + * 示例 + + ```javascript + onCreate(want, launchParam) { + Logger.info(`MainAbility onCreate ${AbilityConstant.LaunchReason.CONTINUATION}`) + globalThis.abilityWant = want; + if (launchParam.launchReason == AbilityConstant.LaunchReason.CONTINUATION) { + let input = want.parameters.input // get user data from want params + AppStorage.SetOrCreate('ContinueInput', input) + Logger.info(`onCreate for continuation sessionId: ${this.sessionId}`) + + this.contentStorage = new ContentStorage(); + this.context.restoreWindowStage(this.contentStorage); + } + } + ``` + + + +### 迁移数据 + +1. 使用分布式对象 + + 分布式数据对象提供了与本地变量类似的操作,实现两个设备的数据同步,当设备1的应用A的分布式数据对象增、删、改数据后,设备2的应用A也可以获取到对应的数据变化,同时还能监听数据变更以及对端数据对象的上下线。用法详见[分布式对象指导文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/database/database-distributedobject-guidelines.md)。 + + 迁移场景中,分布式对象(distributedDataObject)主要用于将本机内存数据同步到目标设备。 + + - 发起端在onContinue中,将待迁移的数据存入分布式对象中,然后设置好session id,并通过wantParam将session id传到远端设备。 + + ```javascript + import Ability from '@ohos.application.Ability'; + import distributedObject from '@ohos.data.distributedDataObject'; + + var g_object = distributedObject.createDistributedObject({name:undefined}); + + export default class MainAbility extends Ability { + contentStorage : ContenStorage + sessionId : string; + + onContinue(wantParam : {[key: string]: any}) { + Logger.info("onContinue using distributedObject") + this.sessionId = distributedObject.genSessionId(); + //set distributed data object session id + g_object.setSessionId(this.sessionId); + g_object.name = "Amy"; + // set session id into want params + wantParam["session"] = this.sessionId; + return AbilityConstant.OnContinueResult.AGREE + } + + ``` + + - 目标设备在onCreate中,取出发起端传过来的session id,建立分布式对象并关联该session id,这样就能实现分布式对象的同步。需要注意的是,在调用restoreWindowStage之前,迁移需要的分布式对象必须全部关联完,保证能够获取到正确的数据。 + + ```javascript + import Ability from '@ohos.application.Ability'; + import distributedObject from '@ohos.data.distributedDataObject'; + + var g_object = distributedObject.createDistributedObject({name:undefined}); + + export default class MainAbility extends Ability { + contentStorage : ContentStorage + sessionId : string; + + statusCallback(sessionId, networkid, status) { + Logger.info(`continuation object status change, sessionId: ${sessionId}, status: ${status}, g_object.name: ${g_object.name}`) + } + + onCreate(want, launchParam) { + Logger.info(`MainAbility onCreate ${AbilityConstant.LaunchReason.CONTINUATION}`) + if (launchParam.launchReason == AbilityConstant.LaunchReason.CONTINUATION) { + // get distributed data object session id from want params + this.sessionId = want.parameters.session + Logger.info(`onCreate for continuation sessionId: ${this.sessionId}`) + + g_object.on("status", this.statusCallback); + // set session id, so it will sync data from remote device + g_object.setSessionId(this.sessionId); + + this.contentStorage = new ContentStorage(); + this.context.restoreWindowStage(this.contentStorage); + } + } + } + ``` + + + +以上完整的示例见sample + + + diff --git a/zh-cn/application-dev/ability/stage-ability.md b/zh-cn/application-dev/ability/stage-ability.md new file mode 100644 index 0000000000..660c3016ac --- /dev/null +++ b/zh-cn/application-dev/ability/stage-ability.md @@ -0,0 +1,276 @@ +# Ability开发指导 +## 场景介绍 +Stage模型是基于API version 9的应用开发模型,对此模型的介绍详见[Stage模型综述](stage-brief.md)。基于Stage模型的Ability应用开发,主要涉及如下功能逻辑: +- 创建Page Ability应用,如视频播放、新闻资讯等,需要通过屏幕进行浏览的应用,以及支持人机交互。 +- 获取Ability的配置信息,如ApplicationInfo、AbilityInfo及HapModuleInfo等。 +- 启动/带参数启动/带返回结果启动/带AccountId启动其他Ability。 +- 应用向用户申请授权。 +- 系统环境变化通知给AbilityStage及Ability。 +- 通用组件Call功能,详见[Call调用开发指导](stage-call.md)。 +- 连接ServiceExtensionAbility,与ServiceExtensionAbility断开连接,详见[ServiceExtensionAbility开发指导](stage-serviceextension.md)。 +- 应用迁移,详见[应用迁移开发指导](stage-ability-continuation.md)。 + +### 启动模式 +ability支持单实例、多实例和指定实例3种启动模式。 +在module.json中通过launchType配置项,可以配置具体的启动模式,其中: + +| 启动模式 | 描述 |说明 | +| ----------- | ------- |---------------- | +| standard | 多实例 | 每次startAbility都会启动一个新的实例 | +| singleton | 单实例 | 系统中只存在唯一一个实例,startAbility时,如果已存在,则复用系统中的唯一一个实例 | +| specified | 指定实例 | 运行时由ability内部业务决定是否创建多实例 | + +缺省情况下是singleton模式。 + +## 接口说明 +AbilityStage功能如下(AbilityStage类,拥有context属性,具体的API详见[接口文档](../reference/apis/js-apis-application-abilitystage.md)): + +**表1** AbilityStage API接口功能介绍 +|接口名|描述| +|:------|:------| +|void onCreate()|AbilityStage初始化时被调用。| +|string onAcceptWant(want: Want)|启动指定Ability时被调用。| +|void onConfigurationUpdated(config: Configuration)|全局配置发生变更时被调用。| + +Ability功能如下(Ability类,具体的API详见[接口文档](../reference/apis/js-apis-application-ability.md)): + +**表2** Ability API接口功能介绍 +|接口名|描述| +|:------|:------| +|void onCreate(want: Want, param: AbilityConstant.LaunchParam)|Ability生命周期回调,Ability启动时被调用。| +|void onDestroy()|Ability生命周期回调,Ability销毁时被调用。| +|void onWindowStageCreate(windowStage: window.WindowStage)|Ability生命周期回调,创建window stage时被调用,应用开发者可通过window.WindowStage的接口执行页面加载等操作。| +|void onWindowStageDestroy()|Ability生命周期回调,销毁window stage时被调用。| +|void onForeground()|Ability生命周期回调,Ability切换至前台时被调用。| +|void onBackground()|Ability生命周期回调,Ability切换至后台时被调用。| +|void onNewWant(want: Want)|Ability回调,Ability的启动模式设置为单例时被调用。| +|void onConfigurationUpdated(config: Configuration)|Ability回调,Ability的系统配置更新时被调用。| + +Ability类拥有context属性,context属性为AbilityContext类,AbilityContext类拥有abilityInfo、currentHapModuleInfo等属性,具体的API详见[接口文档](../reference/apis/js-apis-ability-context.md)。 + +**表3** AbilityContext API接口功能介绍 +|接口名|描述| +|:------|:------| +|void startAbility(want: Want, callback: AsyncCallback)|启动Ability。| +|void startAbility(want: Want, options: StartOptions, callback: AsyncCallback)|启动Ability。| +|void startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback)|带AccountId启动Ability。| +|void startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback)|带AccountId启动Ability。| +|void startAbilityForResult(want: Want, callback: AsyncCallback)|带返回结果启动Ability。| +|void startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback)|带返回结果启动Ability。| +|void startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback)|带返回结果及AccountId启动Ability。| +|void startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback)|带返回结果及AccountId启动Ability。| +|void terminateSelf(callback: AsyncCallback)|销毁当前的Page Ability。| +|void terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback)|带返回结果销毁当前的Page Ability。| + +## 开发步骤 +### 创建Page Ability应用 +创建Stage模型的Page Ability应用,需实现AbilityStage接口及Ability生命周期接口,并使用窗口提供的方法设置页面。具体示例代码如下: +1. 导入AbilityStage模块。 + ``` + import AbilityStage from "@ohos.application.AbilityStage" + ``` +2. 实现AbilityStage接口。 + ```ts + export default class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage onCreate") + } + } + ``` +3. 导入Ability模块。 + ```js + import Ability from '@ohos.application.Ability' + ``` +4. 实现Ability生命周期接口。 + + 在`onWindowStageCreate(windowStage)`中通过loadContent接口设置应用要加载的页面,window接口的使用详见[窗口开发指导](../windowmanager/window-guidelines.md)。 + ```ts + export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log("MainAbility onCreate") + } + + onDestroy() { + console.log("MainAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + console.log("MainAbility onWindowStageCreate") + + windowStage.loadContent("pages/index").then((data) => { + console.log("MainAbility load content succeed with data: " + JSON.stringify(data)) + }).catch((error) => { + console.error("MainAbility load content failed with error: "+ JSON.stringify(error)) + }) + } + + onWindowStageDestroy() { + console.log("MainAbility onWindowStageDestroy") + } + + onForeground() { + console.log("MainAbility onForeground") + } + + onBackground() { + console.log("MainAbility onBackground") + } + } + ``` +### 获取AbilityStage及Ability的配置信息 +AbilityStage类及Ability类均拥有context属性,应用可以通过`this.context`获取Ability实例的上下文,进而获取详细的配置信息。如下示例展示了AbilityStage通过context属性获取包代码路径、hap包名、ability名以及系统语言的方法。具体示例代码如下: +```ts +import AbilityStage from "@ohos.application.AbilityStage" +export default class MyAbilityStage extends AbilityStage { + onCreate() { + console.log("MyAbilityStage onCreate") + let context = this.context + console.log("MyAbilityStage bundleCodeDir" + context.bundleCodeDir) + + let currentHapModuleInfo = context.currentHapModuleInfo + console.log("MyAbilityStage hap module name" + currentHapModuleInfo.name) + console.log("MyAbilityStage hap module mainAbilityName" + currentHapModuleInfo.mainAbilityName) + + let config = this.context.config + console.log("MyAbilityStage config language" + config.language) + } +} +``` + +如下示例展示了Ability通过context属性获取包代码路径、hap包名、ability名以及系统语言的方法。具体示例代码如下: +```ts +import Ability from '@ohos.application.Ability' +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + console.log("MainAbility onCreate") + let context = this.context + console.log("MainAbility bundleCodeDir" + context.bundleCodeDir) + + let abilityInfo = this.context.abilityInfo; + console.log("MainAbility ability bundleName" + abilityInfo.bundleName) + console.log("MainAbility ability name" + abilityInfo.name) + + let config = this.context.config + console.log("MyAbilityStage config language" + config.language) + } +} +``` + +### 启动Ability +应用可以通过`this.context`获取Ability实例的上下文,进而使用AbilityContext中的StartAbility相关接口启动Ability。启动Ability可指定Want、StartOptions、accountId,通过callback形式或promise形式实现。具体示例代码如下: +```ts +let context = this.context +var want = { + "deviceId": "", + "bundleName": "com.example.MyApplication", + "abilityName": "MainAbility" +}; +var options = { + windowMode: 0, + displayId: 2 +}; +context.startAbility(want, options).then((data) => { + console.log("Succeed to start ability with data: " + JSON.stringify(data)) +}).catch((error) => { + console.error("Failed to start ability with error: "+ JSON.stringify(error)) +}) +``` + +### 跨设备启动Ability(当前仅对系统应用开放) +>说明:由于DeviceManager的getTrustedDeviceListSync接口仅对系统应用开放,当前跨设备启动Ability仅支持系统应用 +跨设备场景下,需指定对端设备deviceId,具体示例代码如下: +```ts +let context = this.context +var want = { + "deviceId": getRemoteDeviceId(), + "bundleName": "com.example.MyApplication", + "abilityName": "MainAbility" +}; +context.startAbility(want).then((data) => { + console.log("Succeed to start remote ability with data: " + JSON.stringify(data)) +}).catch((error) => { + console.error("Failed to start remote ability with error: "+ JSON.stringify(error)) +}) +``` +从DeviceManager获取指定设备的deviceId。具体示例代码如下: +```ts +import deviceManager from '@ohos.distributedHardware.deviceManager'; +function getRemoteDeviceId() { + if (typeof dmClass === 'object' && dmClass != null) { + var list = dmClass.getTrustedDeviceListSync(); + if (typeof (list) == 'undefined' || typeof (list.length) == 'undefined') { + console.log("MainAbility onButtonClick getRemoteDeviceId err: list is null"); + return; + } + console.log("MainAbility onButtonClick getRemoteDeviceId success:" + list[0].deviceId); + return list[0].deviceId; + } else { + console.log("MainAbility onButtonClick getRemoteDeviceId err: dmClass is null"); + } +} +``` + +### 应用向用户申请授权 +应用需要某些权限如存储、位置信息、访问日历时,需要向用户申请授权。明确需要申请的权限后,在`module.json`中添加待申请的权限,同时通过接口`requestPermissionsFromUser`以动态弹窗的方式向用户申请授权。以访问日历为例,具体示例代码如下: +module.json的修改: +```json +"requestPermissions": [ + { + "name": "ohos.permission.READ_CALENDAR" + } +] +``` +通过动态弹窗向用户申请授权: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.READ_CALENDAR'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` +在跨设备场景下,需要向用户申请数据同步的权限。具体示例代码如下: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.DISTRIBUTED_DATASYNC'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` + +### 系统环境变化通知给AbilityStage及Ability +全局配置,比如系统语言和颜色模式发生变化时,通过`onConfigurationUpdated`接口通知给AbilityStage和Ability。系统应用可以通过`updateConfiguration`接口更新系统语言和颜色模式。如下示例展示了AbilityStage的`onConfigurationUpdated`回调实现,系统语言和颜色模式发生变化时触发该回调。具体示例代码如下: +```ts +import Ability from '@ohos.application.Ability' +import ConfigurationConstant from '@ohos.application.ConfigurationConstant' +export default class MyAbilityStage extends AbilityStage { + onConfigurationUpdated(config) { + console.log("MyAbilityStage onConfigurationUpdated") + console.log("MyAbilityStage config language" + config.language) + console.log("MyAbilityStage config colorMode" + config.colorMode) + } +} +``` + +如下示例展示了Ability的`onConfigurationUpdated`回调实现,系统语言、颜色模式以及Display相关的参数,比如方向、Density,发生变化时触发该回调。具体示例代码如下: +```ts +import Ability from '@ohos.application.Ability' +import ConfigurationConstant from '@ohos.application.ConfigurationConstant' +export default class MainAbility extends Ability { { + onConfigurationUpdated(config) { + console.log("MainAbility onConfigurationUpdated") + console.log("MainAbility config language" + config.language) + console.log("MainAbility config colorMode" + config.colorMode) + console.log("MainAbility config direction" + config.direction) + console.log("MainAbility config screenDensity" + config.screenDensity) + console.log("MainAbility config displayId" + config.displayId) + } +} +``` + +## 相关实例 +针对Stage模型Ability开发,有以下相关示例可供参考: +- [`StageCallAbility`:StageAbility的创建与使用(eTS)(API9)](https://gitee.com/openharmony/app_samples/tree/master/ability/StageCallAbility) diff --git a/zh-cn/application-dev/ability/stage-brief.md b/zh-cn/application-dev/ability/stage-brief.md new file mode 100644 index 0000000000..6124a5ac9c --- /dev/null +++ b/zh-cn/application-dev/ability/stage-brief.md @@ -0,0 +1,97 @@ +# Stage模型综述 + +### 设计思想 + +​ Stage模型的设计,主要是为了解决FA模型无法解决的开发场景问题,方便开发者更加方便地开发出分布式环境下的复杂应用。 + +​ Stage模型的设计思想如下图所示。 + +![stagedesign](figures/stagedesign.png) + +​ Stage模型的设计基于如下三个出发点: + +- **应用的能力与系统总体功能和功耗的平衡** + + ​ 在系统运行过程中,前台应用的资源占用会被优先保障,与此同时由于应用能力不同而产生的功耗,也需要符合系统整体功耗的要求。Stage模型通过Ability与UI分离、严格的后台管控、基于场景的服务机制及单进程模型来达成这种应用能力与整体系统功耗的平衡。 + +- **原生支持组件级的迁移和协同** + + ​ OpenHarmony是原生支持分布式的操作系统,应用框架需要从架构设计上使得组件更易于实现迁移和协同。Stage模型通过Ability与UI分离及UI展示与服务能力合一等模型特性,实现这一设计目标。 + +- **支持多设备和多窗口形态的特点** + + ​ 为了支持多种设备形态和更易于实现多种不同的窗口形态,需要组件管理服务和窗口管理服务在架构层面上是解耦的,从而方便裁剪,更有利于定制不同的窗口形态。Stage模型通过重新定义了Ability生命周期定义和设计组件管理服务和窗口管理服务的单向依赖解决这一问题。 + + +### 基本概念 + +​ 下图展示了Stage模型中的基本概念。 + +![stageconcept](figures/stageconcept.png) + +- **HAP**:即HarmonyAbilityPackage,OpenHarmony应用编译、分发、加载的基本单位,也称为module,每个HAP都有一个应用内唯一的名称,称为moduleName; +- **Bundle**:通过appid标识的OpenHarmony应用,Bundle可以包含多个HAP,每个应用都有一个bundleName,但是bundleName并不能唯一标识一个应用,appid中包含bundleName以及其他的更多信息,能够唯一标识一个应用; +- **AbilityStage**:对应HAP的运行期类,在HAP首次加载到进程中时创建,运行期开发者可见; +- **Application**:对应Bundle的运行期类,运行期开发者不可见; +- **Context**:提供运行期开发者可以调用的各种能力,Ability组件和各种ExtensionAbility都有各自不同的context类,他们都继承自基类Context,基类提供包名、moduleName、路径等信息; +- **Ability**:提供生命周期回调,持有AbilityContext,支持组件迁移/协同; +- **ExtensionAbility**:基于场景的服务扩展能力统称,系统定义了多种基于场景的ExtensionAbility类,它们持有各自的ExtensionContext; +- **WindowStage**:本地窗口管理器; +- **Window**:窗口 管理器管理的基本单元,持有一个ArkUI引擎实例; +- **Ark UI Page**:Ark声明式UI展示。 + + +### 生命周期 + +​ Ability及AbilityStage的生命周期是应用的基本流程中最重要的概念。在[Ability框架概述](ability-brief.md)中,给出了FA模型与Stage模型的生命周期对比,这里重点对Ability生命周期切换以及和AbilityStage、WindowStage之间的调度关系进行介绍。 + +![stageabilitylifecyclecallback](figures/stageabilitylifecyclecallback.png) + +​ 为了实现多设备形态上的裁剪和多窗口的可扩展性,OpenHarmony对组件管理和窗口管理进行了解耦。Stage模型定义Ability组件的生命周期,只包含创建、销毁、前后台等状态,而将与界面相关内容强相关的获焦、失焦状态放在WindowStage之中,从而实现Ability与窗口之间的弱耦合;在服务侧,窗口管理服务依赖于组件管理服务,前者通知后者前后台变化,这样组件管理服务仅感知前后台变化,不感知焦点变化。 + + +### Ability组件实例与任务 + +​ Ability组件有三种启动类型: + ++ **Singleton**:应用进程中只存在一个该类型的Ability实例,如下图Ability1; + ++ **Standard**:每次startAbility调用,都会在应用进程中创建一个该类型的实例,如下图Ability2的两个实例; + ++ **Specified**:允许开发者在系统创建AbilityRecord之前,为该实例创建一个key,后续每次创建该类型的Ability实例都会询问应用使用哪个key对应的Ability实例,来响应startAbility请求,如下图Ability3。 + +​ 每个Ability实例都对应了一个Launcher Recent中看到的Mission(任务)。 + +​ 每个Ability实例对应的Mission都留有该Ability实例的快照,Ability实例销毁后,Mission中的会保留Ability的类的信息和快照,直到用户删除,或者超过存储上限。 + + ![AbilityComponentInstanceMission](figures/AbilityComponentInstanceMission.png) + +### ExtensionAbility机制 + +​ 不同于用于页面展示的Ability,ExtensionAbility提供的是一种受限的服务运行环境。ExtensionAbility具有如下特点: + +- 独立于主进程的单独进程运行,与主进程无IPC,共享一个存储沙箱; + +- 独立的Context提供基于业务场景的api能力; + +- 由系统触发创建,应用不能直接创建; + +- ExtensionAbility和进程的生命周期受系统管理。 + +​ 下图以卡片服务使用场景为例进行展示,系统提供了FormExtensionAbility基类,开发者通过派生提供卡片的具体信息。FormExtensionAbility实例及其所在的ExtensionAbility进程的整个生命周期,都是由系统服务FormManagerService进行管理。 + +![ExtensionAbility](figures/ExtensionAbility.png) + +### 进程模型 + +​ OpenHarmony系统中的应用均满足单进程模型。所谓的单进程模型,是指不允许应用配置多进程,应用中所有的进程都是由系统创建和管理的。每个应用至多并存三类进程: + +- 主进程:运行所有的Ability组件、页面和业务逻辑; + +- Extension进程:运行应用中的ExtensionAbility派生类,该进程由系统中的特定场景的服务管理其生命周期; + +- Render进程:专门为webview创建的进程,用于加载webview的渲染库。 + + 下图展示了应用的进程模型。 + + ![stageprocessmodel](figures/stageprocessmodel.png) diff --git a/zh-cn/application-dev/ability/stage-call.md b/zh-cn/application-dev/ability/stage-call.md new file mode 100644 index 0000000000..28aee6477f --- /dev/null +++ b/zh-cn/application-dev/ability/stage-call.md @@ -0,0 +1,247 @@ +# Call调用开发指导 +## 场景介绍 +Ability Call调用是Ability能力的扩展,它为Ability提供一种能够被外部调用的能力。使Ability既能被拉起到前台展示UI,也支持Ability在后台被创建并运行。应用开发者可通过Call调用,使用IPC通信实现不同Ability之间的数据共享。Call调用的场景主要包括: +- 创建Callee被调用端。 +- 访问Callee被调用端。 + +本文中的Caller和Callee分别表示调用者和被调用者,Call调用流程示意图如下。 + +![stage-call](figures/stage-call.png) + +## 接口说明 +Caller及Callee功能如下:具体的API详见[接口文档](../reference/apis/js-apis-application-ability.md#caller)。 + +**表1** Call API接口功能介绍 +|接口名|描述| +|:------|:------| +|Promise startAbilityByCall(want: Want)|获取指定通用组件的Caller通信接口,拉起指定通用组件并将其切换到后台。| +|void on(method: string, callback: CalleeCallBack)|Callee.on,通用组件Callee注册method对应的callback方法。| +|void off(method: string)|Callee.off,通用组件Callee去注册method的callback方法。| +|Promise call(method: string, data: rpc.Sequenceable)|Caller.call,向通用组件Callee发送约定序列化数据。| +|Promise callWithResult(method: string, data: rpc.Sequenceable)|Caller.callWithResult,向通用组件Callee发送约定序列化数据, 并将返回的约定序列化数据带回。| +|void release()|Caller.release,释放通用组件的Caller通信接口。| +|void onRelease(callback: OnReleaseCallBack)|Caller.onRelease,注册通用组件通信断开监听通知。| + +## 开发步骤 +### 创建Callee被调用端 +Callee被调用端,需要实现指定方法的数据接收回调函数、数据的序列化及反序列化方法。在需要接收数据期间,通过on接口注册监听,无需接收数据时通过off接口解除监听。 +1. 配置Ability的启动模式 + + 配置module.json5,将Callee被调用端所在的Ability配置为单实例"singleton"。 + +|Json字段|字段说明| +|:------|:------| +|"launchType"|Ability的启动模式,设置为"singleton"类型 | + +Ability配置标签示例如下: +```json +"abilities":[{ + "name": ".CalleeAbility", + "srcEntrance": "./ets/CalleeAbility/CalleeAbility.ts", + "launchType": "singleton", + "description": "$string:CalleeAbility_desc", + "icon": "$media:icon", + "label": "$string:CalleeAbility_label", + "visible": true +}] +``` +2. 导入Ability模块 +``` +import Ability from '@ohos.application.Ability' +``` +3. 定义约定的序列化数据 + + 调用端及被调用端发送接收的数据格式需协商一致,如下示例约定数据由number和string组成。具体示例代码如下: +```ts +export default class MySequenceable { + num: number = 0 + str: String = "" + + constructor(num, string) { + this.num = num + this.str = string + } + + marshalling(messageParcel) { + messageParcel.writeInt(this.num) + messageParcel.writeString(this.str) + return true + } + + unmarshalling(messageParcel) { + this.num = messageParcel.readInt() + this.str = messageParcel.readString() + return true + } +} +``` +4. 实现Callee.on监听及Callee.off解除监听 + + 被调用端Callee的监听函数注册时机, 取决于应用开发者。注册监听之前的数据不会被处理,取消监听之后的数据不会被处理。如下示例在Ability的onCreate注册'CalleeSortMethod'监听,在onDestroy取消监听,收到序列化数据后作相应处理并返回,应用开发者根据实际需要做相应处理。具体示例代码如下: +```ts +const TAG: string = '[CalleeAbility]' +const MSG_SEND_METHOD: string = 'CallSendMsg' + +function sendMsgCallback(data) { + Logger.log(TAG, 'CalleeSortFunc called') + + // 获取Caller发送的序列化数据 + let receivedData = new MySequenceable(0, '') + data.readSequenceable(receivedData) + Logger.log(TAG, `receiveData[${receivedData.num}, ${receivedData.str}]`) + + // 作相应处理 + // 返回序列化数据result给Caller + return new MySequenceable(receivedData.num + 1, `send ${receivedData.str} succeed`) +} + +export default class CalleeAbility extends Ability { + onCreate(want, launchParam) { + try { + this.callee.on(MSG_SEND_METHOD, sendMsgCallback) + } catch (error) { + Logger.error(TAG, `${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`) + } + } + + onDestroy() { + try { + this.callee.off(MSG_SEND_METHOD) + } catch (error) { + console.error(TAG, `${MSG_SEND_METHOD} unregister failed with error ${JSON.stringify(error)}`) + } + } +} +``` + +### 访问Callee被调用端 +1. 导入Ability模块 +``` +import Ability from '@ohos.application.Ability' +``` +2. 获取Caller通信接口 + + Ability的context属性实现了startAbilityByCall方法,用于获取指定通用组件的Caller通信接口。如下示例通过`this.context`获取Ability实例的context属性,使用startAbilityByCall拉起Callee被调用端并获取Caller通信接口,注册Caller的onRelease监听。应用开发者根据实际需要做相应处理。具体示例代码如下: +```ts +async onButtonGetCaller() { + try { + this.caller = await context.startAbilityByCall({ + bundleName: 'com.samples.CallApplication', + abilityName: 'CalleeAbility' + }) + if (this.caller === undefined) { + Logger.error(TAG, 'get caller failed') + return + } + Logger.log(TAG, 'get caller success') + this.regOnRelease(this.caller) + } catch (error) { + Logger.error(TAG, `get caller failed with ${error}`) + } +}.catch((error) => { + console.error(TAG + 'get caller failed with ' + error) +}) +``` +在跨设备场景下,需指定对端设备deviceId。具体示例代码如下: +```ts +let TAG = '[MainAbility] ' +var caller = undefined +let context = this.context + +context.startAbilityByCall({ + deviceId: getRemoteDeviceId(), + bundleName: 'com.samples.CallApplication', + abilityName: 'CalleeAbility' +}).then((data) => { + if (data != null) { + caller = data + console.log(TAG + 'get remote caller success') + // 注册caller的release监听 + caller.onRelease((msg) => { + console.log(TAG + 'remote caller onRelease is called ' + msg) + }) + console.log(TAG + 'remote caller register OnRelease succeed') + } +}).catch((error) => { + console.error(TAG + 'get remote caller failed with ' + error) +}) +``` +从DeviceManager获取指定设备的deviceId,getTrustedDeviceListSync接口仅对系统应用开放。具体示例代码如下: +```ts +import deviceManager from '@ohos.distributedHardware.deviceManager'; +var dmClass; +function getRemoteDeviceId() { + if (typeof dmClass === 'object' && dmClass != null) { + var list = dmClass.getTrustedDeviceListSync(); + if (typeof (list) == 'undefined' || typeof (list.length) == 'undefined') { + console.log("MainAbility onButtonClick getRemoteDeviceId err: list is null"); + return; + } + console.log("MainAbility onButtonClick getRemoteDeviceId success:" + list[0].deviceId); + return list[0].deviceId; + } else { + console.log("MainAbility onButtonClick getRemoteDeviceId err: dmClass is null"); + } +} +``` +在跨设备场景下,需要向用户申请数据同步的权限。具体示例代码如下: +```ts +let context = this.context +let permissions: Array = ['ohos.permission.DISTRIBUTED_DATASYNC'] +context.requestPermissionsFromUser(permissions).then((data) => { + console.log("Succeed to request permission from user with data: "+ JSON.stringify(data)) +}).catch((error) => { + console.log("Failed to request permission from user with error: "+ JSON.stringify(error)) +}) +``` +3. 发送约定序列化数据 + +向被调用端发送Sequenceable数据有两种方式,一种是不带返回值,一种是获取被调用端返回的数据,method以及序列化数据需要与被调用端协商一致。如下示例调用Call接口,向Callee被调用端发送数据。具体示例代码如下: +```ts +const MSG_SEND_METHOD: string = 'CallSendMsg' +async onButtonCall() { + try { + let msg = new MySequenceable(1, 'origin_Msg') + await this.caller.call(MSG_SEND_METHOD, msg) + } catch (error) { + Logger.error(TAG, `caller call failed with ${error}`) + } +} +``` + +如下示例调用CallWithResult接口,向Callee被调用端发送待处理的数据`originMsg`,并将'CallSendMsg'方法处理完毕的数据赋值给`backMsg`。具体示例代码如下: +```ts +const MSG_SEND_METHOD: string = 'CallSendMsg' +originMsg: string = '' +backMsg: string = '' +async onButtonCallWithResult(originMsg, backMsg) { + try { + let msg = new MySequenceable(1, originMsg) + const data = await this.caller.callWithResult(MSG_SEND_METHOD, msg) + Logger.log(TAG, 'caller callWithResult succeed') + + let result = new MySequenceable(0, '') + data.readSequenceable(result) + backMsg(result.str) + Logger.log(TAG, `caller result is [${result.num}, ${result.str}]`) + } catch (error) { + Logger.error(TAG, `caller callWithResult failed with ${error}`) + } +} +``` +4. 释放Caller通信接口 + +Caller不再使用后,应用开发者可以通过release接口释放Caller。具体示例代码如下: +```ts +try { + this.caller.release() + this.caller = undefined + Logger.log(TAG, 'caller release succeed') +} catch (error) { + Logger.error(TAG, `caller release failed with ${error}`) +} +``` + +## 相关实例 +针对Stage模型本地Call功能开发,有以下相关实例可供参考: +- [`StageCallAbility`:StageAbility的创建与使用(eTS)(API9)](https://gitee.com/openharmony/app_samples/tree/master/ability/StageCallAbility) diff --git a/zh-cn/application-dev/ability/stage-formextension.md b/zh-cn/application-dev/ability/stage-formextension.md new file mode 100644 index 0000000000..d6977be8d4 --- /dev/null +++ b/zh-cn/application-dev/ability/stage-formextension.md @@ -0,0 +1,345 @@ +# Stage卡片开发指导 + +## 卡片概述 + +卡片是一种界面展示形式,可以将应用的重要信息或操作前置到卡片,以达到服务直达,减少体验层级的目的。 + +卡片常用于嵌入到其他应用(当前只支持系统应用)中作为其界面的一部分显示,并支持拉起页面,发送消息等基础的交互功能。卡片使用方负责显示卡片。 + +卡片的基本概念: + +- 卡片提供方 + 提供卡片显示内容原子化服务,控制卡片的显示内容、控件布局以及控件点击事件。 +- 卡片使用方 + 显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。 +- 卡片管理服务 + 用于管理系统中所添加卡片的常驻代理服务,包括卡片对象的管理与使用,以及卡片周期性刷新等。 + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 卡片使用方和提供方不要求常驻运行,在需要添加/删除/请求更新卡片时,卡片管理服务会拉起卡片提供方获取卡片信息。 + +开发者仅需作为卡片提供方进行卡片内容的开发,卡片使用方和卡片管理服务由系统自动处理。 + +卡片提供方控制卡片实际显示的内容、控件布局以及点击事件。 + +## 场景介绍 + +Stage卡片开发,即基于[Stage模型](stage-brief.md)的卡片提供方开发,主要涉及如下功能逻辑: + +- 卡片生命周期回调函数FormExtension开发。 +- 创建卡片数据FormBindingData对象。 +- 通过FormProvider更新卡片。 +- 卡片页面开发。 + +## 接口说明 + +FormExtension功能如下:FormExtension类,拥有context属性,具体的API详见[接口文档](../reference/apis/js-apis-formextension.md)。 + +**表1** FormExtension API接口功能介绍 + +| 接口名 | 描述 | +| :----------------------------------------------------------- | :------------------------------------------- | +| onCreate(want: Want): formBindingData.FormBindingData | 卡片提供方接收创建卡片的通知接口。 | +| onCastToNormal(formId: string): void | 卡片提供方接收临时卡片转常态卡片的通知接口。 | +| onUpdate(formId: string): void | 卡片提供方接收更新卡片的通知接口。 | +| onVisibilityChange(newStatus: { [key: string]: number }): void | 卡片提供方接收修改可见性的通知接口。 | +| onEvent(formId: string, message: string): void | 卡片提供方接收处理卡片事件的通知接口。 | +| onDestroy(formId: string): void | 卡片提供方接收销毁卡片的通知接口。 | +| onConfigurationUpdated(config: Configuration): void; | 当系统配置更新时调用。 | + +FormExtension类拥有context属性,context属性为FormExtensionContext类,具体的API详见[接口文档](../reference/apis/js-apis-formextensioncontext.md)。 + +**表2** FormExtensionContext API接口功能介绍 + +| 接口名 | 描述 | +| :----------------------------------------------------------- | :------------------------ | +| updateForm(formId: string, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback\): void | 回调形式主动更新卡片。 | +| updateForm(formId: string, formBindingData: formBindingData.FormBindingData): Promise\ | Promise形式主动更新卡片。 | + +FormProvider类具体的API详见[接口文档](../reference/apis/js-apis-formprovider.md)。 + +**表3** FormProvider API接口功能介绍 + +| 接口名 | 描述 | +| :----------------------------------------------------------- | :------------------------------------------------ | +| setFormNextRefreshTime(formId: string, minute: number, callback: AsyncCallback<void>): void; | 设置指定卡片的下一次更新时间。 | +| setFormNextRefreshTime(formId: string, minute: number): Promise<void>; | 设置指定卡片的下一次更新时间,以promise方式返回。 | +| updateForm(formId: string, formBindingData: FormBindingData, callback: AsyncCallback<void>): void; | 更新指定的卡片。 | +| updateForm(formId: string, formBindingData: FormBindingData): Promise<void>; | 更新指定的卡片,以promise方式返回。 | + +## 开发步骤 + +### 创建卡片FormExtension + +创建Stage模型的卡片,需实现FormExtension生命周期接口。具体示例代码如下: + +1. 导入相关模块 + + ```javascript + import FormExtension from '@ohos.application.FormExtension' + import formBindingData from '@ohos.application.formBindingData' + import formInfo from '@ohos.application.formInfo' + import formProvider from '@ohos.application.formProvider' + ``` + +2. 实现FormExtension生命周期接口 + + ```javascript + export default class FormAbility extends FormExtension { + onCreate(want) { + console.log('FormAbility onCreate'); + // 由开发人员自行实现,将创建的卡片信息持久化,以便在下次获取/更新该卡片实例时进行使用 + let obj = { + "title": "titleOnCreate", + "detail": "detailOnCreate" + }; + let formData = formBindingData.createFormBindingData(obj); + return formData; + } + onCastToNormal(formId) { + // 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理 + console.log('FormAbility onCastToNormal'); + } + onUpdate(formId) { + // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要覆写该方法以支持数据更新 + console.log('FormAbility onUpdate'); + let obj = { + "title": "titleOnUpdate", + "detail": "detailOnUpdate" + }; + let formData = formBindingData.createFormBindingData(obj); + formProvider.updateForm(formId, formData).catch((error) => { + console.log('FormAbility updateForm, error:' + JSON.stringify(error)); + }); + } + onVisibilityChange(newStatus) { + // 使用方发起可见或者不可见通知触发,提供方需要做相应的处理 + console.log('FormAbility onVisibilityChange'); + } + onEvent(formId, message) { + // 若卡片支持触发事件,则需要覆写该方法并实现对事件的触发 + console.log('FormAbility onEvent'); + } + onDestroy(formId) { + // 删除卡片实例数据 + console.log('FormAbility onDestroy'); + } + onConfigurationUpdated(config) { + console.log('FormAbility onConfigurationUpdated, config:' + JSON.stringify(config)); + } + } + ``` + +### 配置卡片配置文件 + +Form需要在应用配置文件module.json中进行配置。 + +- extensionAbility模块,内部字段结构说明: + + | 属性名称 | 含义 | 数据类型 | 是否可缺省 | + | ----------- | ------------------------------------------------------------ | ---------- | -------------------- | + | name | 表示extensionAbility的名字。该标签不可缺省。 | 字符串 | 否 | + | srcEntrance | 表示extensionAbility所对应的JS的代码路径。该标签不可缺省。 | 字符串 | 否 | + | description | 表示extensionAbility的描述。可以是表示描述内容的字符串,也可以是对描述内容的资源索引以支持多语言。 | 字符串 | 可缺省,缺省值为空。 | + | icon | 表示extensionAbility的图标资源文件的索引。 | 字符串 | 可缺省,缺省值为空。 | + | label | 表示extensionAbility的标签信息,即extensionAbility对外显示的文字描述信息。取值可以是描述性内容,也可以是标识label的资源索引。 | 字符串 | 可缺省,缺省值为空。 | + | type | 表示extensionAbility的类型。取值form、service等 | 字符串 | 否 | + | permissions | 表示其他应用的Ability调用此Ability时需要申请的权限。 | 字符串数组 | 可缺省,缺省值为空。 | + | metadata | 表示extensionAbility的元信息。用于描述extensionAbility的配置信息。 | 对象 | 可缺省,缺省值为空 | + + 对于FormExtensionAbility来说,type需要配置为form,并且需要填写metadata元信息,用于配置卡片的具体信息。 + + 配置示例如下: + + ```json + "extensionAbilities": [{ + "name": "FormAbility", + "srcEntrance": "./ets/FormAbility/FormAbility.ts", + "label": "$string:form_FormAbility_label", + "description": "$string:form_FormAbility_desc", + "type": "form", + "metadata": [{ + "name": "ohos.extension.form", + "resource": "$profile:form_config" + }] + }] + ``` + +- 卡片profile模块。在 FormExtensionAbility 的元信息中,需要使用 ohos.extension.form 指定的资源文件的路径,如使用 $profile:form_config 指定开发视图的 resources/base/profile/ 目录下的 form_config.json 作为卡片profile配置文件。 + + 内部字段结构说明: + + | 属性名称 | 含义 | 数据类型 | 是否可缺省 | + | ------------------- | ------------------------------------------------------------ | ---------- | ------------------------ | + | name | 表示卡片的类名。字符串最大长度为127字节。 | 字符串 | 否 | + | description | 表示卡片的描述。取值可以是描述性内容,也可以是对描述性内容的资源索引,以支持多语言。字符串最大长度为255字节。 | 字符串 | 可缺省,缺省为空。 | + | src | 表示卡片对应的UI代码的完整路径。 | 字符串 | 否 | + | window | 用于定义与显示窗口相关的配置。 | 对象 | 可缺省 | + | isDefault | 表示该卡片是否为默认卡片,每个Ability有且只有一个默认卡片。
true:默认卡片。
false:非默认卡片。 | 布尔值 | 否 | + | colorMode | 表示卡片的主题样式,取值范围如下:
auto:自适应。
dark:深色主题。
light:浅色主题。 | 字符串 | 可缺省,缺省值为“auto”。 | + | supportDimensions | 表示卡片支持的外观规格,取值范围:
1 * 2:表示1行2列的二宫格。
2 * 2:表示2行2列的四宫格。
2 * 4:表示2行4列的八宫格。
4 * 4:表示4行4列的十六宫格。 | 字符串数组 | 否 | + | defaultDimension | 表示卡片的默认外观规格,取值必须在该卡片supportDimensions配置的列表中。 | 字符串 | 否 | + | updateEnabled | 表示卡片是否支持周期性刷新,取值范围:
true:表示支持周期性刷新,可以在定时刷新(updateDuration)和定点刷新(scheduledUpdateTime)两种方式任选其一,优先选择定时刷新。
false:表示不支持周期性刷新。 | 布尔类型 | 否 | + | scheduledUpdateTime | 表示卡片的定点刷新的时刻,采用24小时制,精确到分钟。 | 字符串 | 可缺省,缺省值为“0:0”。 | + | updateDuration | 表示卡片定时刷新的更新周期,单位为30分钟,取值为自然数。
当取值为0时,表示该参数不生效。
当取值为正整数N时,表示刷新周期为30*N分钟。 | 数值 | 可缺省,缺省值为“0”。 | + | formConfigAbility | 表示卡片的配置跳转链接,采用URI格式。 | 字符串 | 可缺省,缺省值为空。 | + | formVisibleNotify | 标识是否允许卡片使用卡片可见性通知 | 字符串 | 可缺省,缺省值为空。 | + | metaData | 表示卡片的自定义信息,包含customizeData数组标签。 | 对象 | 可缺省,缺省值为空。 | + + 配置示例如下: + + ```json + { + "forms": [{ + "name": "widget", + "description": "This is a service widget.", + "src": "./js/widget/pages/index/index", + "window": { + "autoDesignWidth": true, + "designWidth": 720 + }, + "isDefault": true, + "colorMode": "auto", + "supportDimensions": ["2*2"], + "defaultDimension": "2*2", + "updateEnabled": true, + "scheduledUpdateTime": "10:30", + "updateDuration": 1, + "formConfigAbility": "ability://ohos.samples.FormApplication.MainAbility" + }] + } + ``` + + +### 卡片信息的持久化 + +因大部分卡片提供方都不是常驻服务,只有在需要使用时才会被拉起获取卡片信息,且卡片管理服务支持对卡片进行多实例管理,卡片ID对应实例ID,因此若卡片提供方支持对卡片数据进行配置,则需要对卡片的业务数据按照卡片ID进行持久化管理,以便在后续获取、更新以及拉起时能获取到正确的卡片业务数据。 + +```javascript + onCreate(want) { + console.log('FormAbility onCreate'); + + let formId = want.parameters["ohos.extra.param.key.form_identity"]; + let formName = want.parameters["ohos.extra.param.key.form_name"]; + let tempFlag = want.parameters["ohos.extra.param.key.form_temporary"]; + // 由开发人员自行实现,将创建的卡片信息持久化,以便在下次获取/更新该卡片实例时进行使用 + storeFormInfo(formId, formName, tempFlag, want); + + let obj = { + "title": "titleOnCreate", + "detail": "detailOnCreate" + }; + let formData = formBindingData.createFormBindingData(obj); + return formData; + } +``` + +且需要适配onDestroy卡片删除通知接口,在其中实现卡片实例数据的删除。 + +```javascript + onDestroy(formId) { + // 删除卡片实例数据 + deleteFormInfo(formId); + console.log('FormAbility onDestroy'); + } +``` + +具体的持久化方法可以参考[轻量级数据存储开发指导](../database/database-preference-guidelines.md)。 + +需要注意的是,卡片使用方在请求卡片时传递给提供方应用的Want数据中存在临时标记字段,表示此次请求的卡片是否为临时卡片: + +常态卡片:卡片使用方会持久化的卡片; + +临时卡片:卡片使用方不会持久化的卡片; + +由于临时卡片的数据具有非持久化的特殊性,某些场景比如卡片服务框架死亡重启,此时临时卡片数据在卡片管理服务中已经删除,且对应的卡片ID不会通知到提供方,所以卡片提供方需要自己负责清理长时间未删除的临时卡片数据。同时对应的卡片使用方可能会将之前请求的临时卡片转换为常态卡片。如果转换成功,卡片提供方也需要对对应的临时卡片ID进行处理,把卡片提供方记录的临时卡片数据转换为常态卡片数据,防止提供方在清理长时间未删除的临时卡片时,把已经转换为常态卡片的临时卡片信息删除,导致卡片信息丢失。 + +### 开发卡片页面 +开发者可以使用hml+css+json开发JS卡片页面: + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 当前仅支持JS扩展的类Web开发范式来实现卡片的UI页面。 + + - hml: + ```html +

+ ``` + + - css: + + ```css +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.bg-img { + flex-shrink: 0; + height: 100%; +} + +.container-inner { + flex-direction: column; + justify-content: flex-end; + align-items: flex-start; + height: 100%; + width: 100%; + padding: 12px; +} + +.title { + font-size: 19px; + font-weight: bold; + color: white; + text-overflow: ellipsis; + max-lines: 1; +} + +.detail_text { + font-size: 16px; + color: white; + opacity: 0.66; + text-overflow: ellipsis; + max-lines: 1; + margin-top: 6px; +} + ``` + + - json: + ```json + { + "data": { + "title": "TitleDefault", + "detail": "TextDefault" + }, + "actions": { + "routerEvent": { + "action": "router", + "abilityName": "com.example.MyApplication.hmservice.FormAbility", + "params": { + "message": "add detail" + } + } + } + } + ``` + +最终可以得到,如下卡片: + +![fa-form-example](figures/fa-form-example.png) + +## 相关实例 + +针对Stage模型卡片提供方的开发,有以下相关实例可供参考: +- [`FormExtAbility`:Stage模型卡片(eTS JS)(API9)](https://gitee.com/openharmony/app_samples/tree/master/ability/FormExtAbility) \ No newline at end of file diff --git a/zh-cn/application-dev/ability/stage-serviceextension.md b/zh-cn/application-dev/ability/stage-serviceextension.md new file mode 100644 index 0000000000..4f8373993c --- /dev/null +++ b/zh-cn/application-dev/ability/stage-serviceextension.md @@ -0,0 +1,82 @@ +# ServiceExtensionAbility开发指导 + +## 场景介绍 +ExtensionAbility,是Stage模型中新增的扩展组件的基类,一般用于处理无界面的任务,生命周期较简单,没有前后台生命周期。ServiceExtensionAbility是ExtensionAbility的扩展类。 + +开发者可以自定义类继承ServiceExtensionAbility,通过重写基类中相关生命周期方法,来做初始化、连接中、断开连接时相关业务逻辑操作。 + +## 接口说明 + +**表1** ServiceExtensionAbility中相关生命周期功能介绍 +|接口名|描述| +|:------|:------| +|onCreate|首次调用startAbility、connectAbility时触发,开发者可以进行初始化操作。| +|onRequest|每次调用startAbility都会触发,首次调用时startId为1,重复调用startAbility递增。| +|onConnect|调用connectAbility触发,重复调用不会再次触发,除非调用disconnectAbility解除绑定后再调用;onConnect返回一个进程通信类RemoteObject。| +|onDisconnect|调用disconnectAbility触发,Extension如果是用connectAbility拉起的,并且已经没有其他应用绑定这个Extension,则会触发onDestroy生命周期销毁组件。| +|onDestroy|调用停止当前ability接口terminateSelf会触发。| + + +## 约束与限制 + +- OpenHarmony当前不支持三方应用创建ServiceExtensionAbility。 + + +## 开发步骤 + +1.创建ServiceExtensionAbility + +开发者在创建TS文件中自定义类继承ServiceExtensionAbility,重写基类回调函数,示例如下: + + ```js + import rpc from '@ohos.rpc' + class StubTest extends rpc.RemoteObject { + constructor(des) { + super(des); + } + onRemoteRequest(code, data, reply, option) { + } + } + + class ServiceExt extends ServiceExtensionAbility { + onCreate(want) { + console.log('onCreate, want:' + want.abilityName); + } + onRequest(want, startId) { + console.log('onRequest, want:' + want.abilityName); + } + onConnect(want) { + console.log('onConnect , want:' + want.abilityName); + return new StubTest("test"); + } + onDisconnect(want) { + console.log('onDisconnect, want:' + want.abilityName); + } + onDestroy() { + console.log('onDestroy'); + } + } + ``` + + +2.注册ServiceExtensionAbility + +需要在应用配置文件module.json中进行注册,注册类型type需要设置为service。 + +**module.json配置样例** + +```json +"extensionAbilities":[{ + "name": "ServiceExtAbility", + "icon": "$media:icon", + "description": "service", + "type": "service", + "visible": true, + "srcEntrance": "./ets/ServiceExtAbility/ServiceExtAbility.ts" +}] +``` + +## 相关实例 + +针对ServiceExtensionAbility开发,有以下相关实例可供参考: +- [`ServiceExtAbility`:StageAbility的创建与使用(eTS)(API9)](https://gitee.com/openharmony/app_samples/tree/master/ability/ServiceExtAbility) diff --git a/zh-cn/application-dev/application-dev-website.md b/zh-cn/application-dev/application-dev-website.md index 4717b423c1..9203644877 100644 --- a/zh-cn/application-dev/application-dev-website.md +++ b/zh-cn/application-dev/application-dev-website.md @@ -14,15 +14,22 @@ - [SysCap说明](quick-start/syscap.md) - 开发 - Ability开发 - - [FA模型综述](ability/fa-brief.md) - - [PageAbility开发指导](ability/fa-pageability.md) - - [ServiceAbility开发指导](ability/fa-serviceability.md) - - [DataAbility开发指导](ability/fa-dataability.md) - - [FA卡片开发指导](ability/fa-formability.md) + - [Ability框架概述](ability/ability-brief.md) + - FA模型 + - [FA模型综述](ability/fa-brief.md) + - [PageAbility开发指导](ability/fa-pageability.md) + - [ServiceAbility开发指导](ability/fa-serviceability.md) + - [DataAbility开发指导](ability/fa-dataability.md) + - [FormAbility开发指导](ability/fa-formability.md) + - Stage模型 + - [Stage模型综述](ability/stage-brief.md) + - [Ability开发指导](ability/stage-ability.md) + - [ServiceExtensionAbility开发指导](ability/stage-serviceextension.md) + - [FormExtensionAbility开发指导](ability/stage-formextension.md) + - [应用迁移开发指导](ability/stage-ability-continuation.md) - 其他 - [WantAgent使用指导](ability/wantagent.md) - [Ability助手使用指导](ability/ability-assistant-guidelines.md) - - [测试框架使用指导](ability-delegator.md) - UI开发 - [方舟开发框架(ArkUI)概述](ui/arkui-overview.md) - 基于JS扩展的类Web开发范式 -- GitLab