新聞中心
作為使用 Page 模板的 Ability 的基本單位 ,AbilitySlice 為服務(wù)邏輯和 UI 顯示提供了帶有載體的功能。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)常山免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一個能力可以有多個能力切片。您必須重寫 Ability#onStart(Intent)方法以指定默認(rèn)的能力切片。通過使用 Ability#setMainRoute(String)指定此默認(rèn)路由。
您可以繼承 AbilitySlice 類來實現(xiàn)自己的能力切片,并在 onStart(ohos.aafwk.content.Intent)方法中設(shè)置其 UI ??梢允褂?setUIContent(ohos.agp.components.ComponentContainer)或setUIContent(int)來設(shè)置 UI 。通常,在功能切片的整個生命周期中,只需設(shè)置一次 UI。示例代碼:
public class MyAbilitySlice extends AbilitySlice {
protected void onStart(Intent intent) {
super.onStart(intent);
// setup UI content from a layout resource
setUIContent(R.res.layout);
}
}您可以使用 present(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent)方法來呈現(xiàn)新的能力切片,也可以使用 startAbility(ohos.aafwk.content.Intent)方法來啟動新能力。
能力切片必須始終托管在一個能力中,并且其生命周期會隨著能力的變化而變化。功能片還具有其獨立的生命周期更改,該更改在功能片切換期間發(fā)生。
注意:在大多數(shù)情況下,您負(fù)責(zé)創(chuàng)建和維護(hù)能力切片實例。但是,系統(tǒng)會在某些情況下創(chuàng)建實例。例如,系統(tǒng)在能力的首次啟動期間創(chuàng)建能力切片實例。這要求所有 AbilitySlice 子類都具有默認(rèn)的無參數(shù)構(gòu)造函數(shù)。根據(jù) Java 的定義,僅當(dāng)您未顯式聲明參數(shù)化構(gòu)造函數(shù)時,編譯器才會為該類提供默認(rèn)的無參數(shù)構(gòu)造函數(shù)。因此,在覆蓋 AbilitySlice 子類時,如果您的實現(xiàn)具有參數(shù)化構(gòu)造函數(shù),則必須顯式聲明一個無參數(shù)構(gòu)造函數(shù)。
使用頁面模板輸入能力
您可以指定多個動作條目和一個功能的默認(rèn)主條目。每個條目代表功能和該功能可以提供的 UI。啟動一項功能后,系統(tǒng)會將已轉(zhuǎn)移“ Intent”中的“操作”字段與定義的條目進(jìn)行匹配。如果找到指定的能力片,則系統(tǒng)將啟動它。如果轉(zhuǎn)移未指定的操作字段被Intent在被轉(zhuǎn)讓或動作字段Intent不匹配所定義的任何條目,則顯示默認(rèn)能力切片。
以下代碼顯示了如何將條目設(shè)置為能力:
public class MainAbility extends Ability {
public void onStart(Intent intent) {
super.onStart(intent);
// set the main entry
setMainRoute(MainSlice.class.getName());
// add action for ability
addActionRoute("action.pay", PaySlice.class.getName());
addActionRoute("action.scan", ScanSlice.class.getName());
}
}
前面的代碼僅定義運行時的入口路由。要將能力的功能暴露給其他能力,必須在配置文件 config.json中 注冊操作字段。示例代碼:
{
"module":{
...
"abilities":[
{
...
"description": "Main ability of hiworld",
"name": ".MainAbility",
"label": "main ability",
"icon": "main-ability.png",
"type": "page",
"visible": true,
"orientation": "unspecified",
"launch-mode": "standard",
"skills"[
{
"actions":[
"action.pay",
"action.scan"
]
}
]
...
}
]
...
}
}
以上述方式注冊受支持的動作后,其他能力可以通過指定動作使用您的能力,并直接打開相應(yīng)的能力片。示例代碼:
Intent intent = new Intent();
Operation operation = new Intent.OperationBuilder()
.withAction("action.pay")
.withDeviceId("")
.withBundleName("xxx")
.withAbilityName("yyy")
.build();
intent.setOperation(operation);
startAbility(intent);
AbilitySlice 生命周期
能力切片的生命周期與承載它的能力有關(guān)。功能片具有與宿主功能相同的生命周期狀態(tài)和生命周期回調(diào)方法。異能的生命周期狀態(tài)一旦更改,其異能切片就會發(fā)生相同的變化,并調(diào)用相同的回調(diào)方法。功能切片也可以具有其獨立的生命周期更改。在切換能力中的能力切片期間會發(fā)生此獨立更改。但是,這樣的切換不會影響宿主能力的生命周期。
能力切片具有以下四個生命周期狀態(tài):
- 初始:能力切片已加載到內(nèi)存中,但未運行。它是所有能力切片的初始狀態(tài)。
- 不活躍:能力切片已加載并執(zhí)行,但不是交互式的。通常,在能力切片變?yōu)?ACTIVE或 Background 之前是中間狀態(tài)。在此狀態(tài)下功能切片的 UI 可能可見,但無法接收輸入事件。
- 活動:能力切片可見且具有交互性。認(rèn)為能力切片具有焦點。
- 背景:能力切片是不可見的。如果宿主能力也處于后臺,則在內(nèi)存不足的情況下會破壞能力和能力切片。
與功能類似,功能切片提供以下生命周期回調(diào)方法。您可以覆蓋它們。
public class MainAbilitySlice extends AbilitySlice {
protected void onStart(Intent intent);
protected void onActive();
protected void onInactive();
protected void onForeground(Intent intent);
protected void onBackground();
protected void onStop();
}
下圖顯示了能力切片的完整生命周期。一個能力切片在任何時候都只能處于一種狀態(tài)。并非所有州都支持直接過渡。
注意:onStart(ohos.aafwk.content.Intent)方法在整個生命周期中只能調(diào)用一次。
下面提供了每種生命周期回調(diào)方法的含義以及一些最佳實踐建議。
- onStart(ohos.aafwk.content.Intent):必須為 UI 初始化設(shè)置實現(xiàn)此方法,例如 setUIContent(int)。在整個生命周期中只能調(diào)用一次此方法。調(diào)用方可以使用Intent類攜帶一些自定義的鍵值,并通過intent提供的方法獲取這些參數(shù)。
- onActive():當(dāng)功能片返回活動狀態(tài)時,將調(diào)用此方法。回調(diào)之后,UI 是交互式的。
- onInactive():當(dāng)能力切片被完全或部分覆蓋時,將調(diào)用此方法?;卣{(diào)后,UI 不交互式。
- onForeground(ohos.aafwk.content.Intent)()}:當(dāng)功能片返回到前景時,將調(diào)用此方法。可以在回調(diào)中恢復(fù)或初始化應(yīng)用程序的交互邏輯。如果在能力切片返回到前景時需要指定新的自定義參數(shù),則可以傳輸新的Intent參數(shù)。
- onBackground():當(dāng)能力切片進(jìn)入背景時,將調(diào)用此方法。在這種狀態(tài)下,您不能長時間執(zhí)行后臺任務(wù),因為系統(tǒng)可能會隨時停止后臺程序的運行。
- onStop():調(diào)用此方法以銷毀能力切片。您可以使用此方法回收資源。
在能力切片之間切換
您可以使用 present(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent)方法呈現(xiàn)新的能力切片,并使用Intent傳輸自定義參數(shù)。示例代碼:
Button button = new Button(this);
button.setClickedListener(listener -> {
AbilitySlice targetSlice = new MyAbilitySlice();
Intent intent = new Intent();
intent.setParam("value", 10);
present(targetSlice, intent);
});
注意:一個能力中最多可以同時顯示 1024 個能力切片。如果嘗試顯示第 1025 個異能切片,系統(tǒng)將強(qiáng)制使該異能崩潰。為了避免這種情況,如果需要同時顯示大量能力切片,則必須改進(jìn)代碼。
領(lǐng)域摘要
| 從接口 ohos.app 繼承的字段。Context |
|---|
| CONTEXT_IGNORE_SECURITY,CONTEXT_INCLUDE_CODE, CONTEXT_RESOUCE_ONLY,CONTEXT_RESTRICTED,MODE_APPEND,MODE_PRIVATE |
構(gòu)造器摘要
| 建設(shè)者 | 描述 |
|---|---|
| AbilitySlice() |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| 布爾值 | acquireAbilityFormAsync(Intent intent,AbilityForm.OnAcquiredCallback acquisitionCallback) | 請求目標(biāo)能力提供的 AbilityForm 實例。 |
| 布爾值 | connectAbility(Intent intent,IAbilityConnection conn) | 將主持人能力與使用服務(wù)模板的能力聯(lián)系起來。 |
| void | continueAbility() | 將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備。 |
| void | continueAbility(string deviceId) | 將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的給定設(shè)備。 |
| void | continueAbilityReversible() | 以可逆的方式將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備,該功能允許將該功能通過 reverseContinueAbility()遷移回本地設(shè)備。 |
| void | continueAbilityReversible(string deviceId) | 以可逆的方式將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備,該功能允許將該功能通過reverseContinueAbility()遷移回本地設(shè)備。 |
| void | 斷開連接能力(IAbilityConnection conn) | 將主機(jī)功能與使用服務(wù)模板的功能斷開連接。 |
| Component | findComponentById(int resID) | 根據(jù)資源 ID 在 XML 文件中查找組件。 |
| Ability | getAbility() | 獲得該切片所屬的能力。 |
| ContinuationState | getContinuationState() | 獲得宿主能力的遷移狀態(tài)。 |
| WindowManager.LayoutConfig | getLayoutParams() | 獲取能力的窗口布局參數(shù)。 |
| Lifecycle | getLifecycle() | 獲取當(dāng)前能力切片的Lifecycle對象。 |
| String | getOriginalDeviceId() | 獲取從其遷移主機(jī)功能的源設(shè)備的 ID。 |
| Window | getWindow() | 獲取與當(dāng)前能力對應(yīng)的窗口。 |
| protected void | onAbilityResult(int requestCode,int resultCode,Intent resultData) | 在調(diào)用startAbilityForResult(ohos.aafwk.content.Intent,int)以啟動功能并返回結(jié)果時調(diào)用。 |
| protected void | onActive() | 回叫時的能力片進(jìn)入 ACTIVE 狀態(tài)。 |
| protected void | onBackground() | 技能片進(jìn)入背景狀態(tài)時回調(diào)。 |
| protected void | onBackPressed() | 當(dāng)按下返回鍵時回叫。 |
| protected void | onForeground (Intent intent) | 當(dāng)能力片的狀態(tài)從背景變?yōu)椴?strong>活動時回調(diào)。 |
| protected void | onInactive() | 當(dāng)功能片進(jìn)入 INACTIVE 狀態(tài)時回調(diào)。 |
| 布爾值 | onKeyDown(int keyCode,KeyEvent keyEvent) | 按下鍵時調(diào)用。 |
| 布爾值 | onKeyUp(int keyCode,KeyEvent keyEvent) | 釋放鍵時調(diào)用。 |
| protected void | onOrientationChanged(AbilityInfo.DisplayOrientation displayOrientation) | 當(dāng)屏幕的顯示方向改變時回調(diào)。 |
| protected void | onResult(int requestCode,Intent resultIntent) | 返回presentForResult(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent,int)方法的結(jié)果時回調(diào)。 |
| protected void | 在onStart(Intent intent) | 開始功能切片時回調(diào)。 |
| protected void | onStop() | 在摧毀能力片之前回叫。 |
| void | 當(dāng)前(AbilitySlice targetSlice,Intent intent) | 提供另一個能力切片,可以是尚未開始的能力切片或宿主能力中的現(xiàn)有能力切片。 |
| void | presentForResult(AbilitySlice targetSlice,Intent intent,int requestCode) | 呈現(xiàn)另一個能力切片,并通過調(diào)用setResult(ohos.aafwk.content.Intent)返回目標(biāo)能力切片的結(jié)果集。 |
| void | releaseAbilityForm(AbilityForm能力 表單) | 釋放主機(jī)能力的指定 AbilityForm 實例。 |
| 布爾值 | reverseContinueAbility() | 將主機(jī)功能從同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備遷移回本地設(shè)備。 |
| void | setDisplayOrientation(AbilityInfo.DisplayOrientation requestedOrientation) | 設(shè)置主持人能力的顯示方向。 |
| void | setIsAmbientMode(boolean isEnabled) | 設(shè)置窗口的輸入 AOD 模式 |
| void | setLayoutParams(WindowManager.LayoutConfig 參數(shù)) | 設(shè)置功能的窗口布局參數(shù)。 |
| void | setResult(Intent resultData) | 設(shè)置銷毀能力切片時要返回的數(shù)據(jù)。 |
| void | setUIContent(int layoutRes) | 通過使用布局資源 ID 來擴(kuò)大布局資源。 |
| void | setUIContent(ComponentContainer componentContainer) | 通過使用 ComponentContainer來膨脹 UI 控件。 |
| void | startAbility(Intent intent) | 開始一項新技能。 |
| void | startAbility(Intent intent,AbilityOptions 選項) | 從選項開始新技能。 |
| void | startAbilityForResult(Intent intent,int requestCode) | 啟動一個異能并在該異能被銷毀時返回執(zhí)行結(jié)果。 |
| 布爾值 | stopAbility(Intent intent) | 破壞使用服務(wù)模板的能力。 |
| void | 終止() | 摧毀當(dāng)前能力切片。 |
| void | 終止能力() | 破壞主機(jī)能力。 |
| String | toString() | 提供 impl 和相應(yīng)的切片信息,以方便人類閱讀。 |
| 從類 ohos.app 繼承的方法。AbilityContext |
|---|
| attachBaseContext,canRequestPermission,createBundleContext,createParallelTaskDispatcher, createSerialTaskDispatcher,DELETEFILE,getAbilityInfo,getAbilityManager,getApplicationContext, getApplicationInfo,getAppType,getBundleCodePath,getBundleManager,getBundleName, getBundleResourcePath,getCacheDir,getCallingAbility,getCallingBundle,getClassloader, getCodeCacheDir,的getContext,getDatabaseDir,getDataDir,GETDIR,getDisplayOrientation, getDistributedDir,getElementName,getExternalCacheDir,getExternalCacheDirs,getExternalFilesDir, getExternalFilesDirs,getExternalMediaDirs,getFilesDir,getGlobalTaskDispatcher,getLocalClassName, getMainTaskDispatcher,getNoBackupFilesDir,getPattern,getPreferencesDir,getProcessInfo, getResourceManager,getTheme,getUITaskDispatcher,初始化,isDeviceEncryptedStorage, isUpdatingConfigurations,requestPermissionsFromUser,重啟,setPattern,setShowOnLockScreen, setTheme,setTransitionAnimation,setWakeUpScreen,startAbilities,起動性能, switchToCredentialEncryptedStorageContext, |
| switchToDeviceEncryptedStorageContext, terminateAbility,terminateAbilityResult,verifyCallingOrSelfPermission,verifyCallingPermission, verifyPermission,verifySelfPermission |
| 從類 java.lang繼承的方法。object |
|---|
| clone,equals,finalize,getClass,hashCode,notify,notifyAll,wait,wait,wait |
構(gòu)造器詳細(xì)信息
能力切片
公共 AliceSlice()
方法細(xì)節(jié)
onStart
受保護(hù)的 void onStart(Intent intent)
開始功能切片時回調(diào)。使用 intent 參數(shù)傳送啟動信息。
您必須為每個功能切片覆蓋此方法,并使用 setUIContent(int)或setUIContent(ohos.agp.components.ComponentContainer)方法來設(shè)置 UI。
在能力切片的整個Lifecycle中只能調(diào)用一次此方法。因此,建議您使用此方法來實現(xiàn)初始化,例如,初始化計時器或定義全局對象。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 指示能力切片開始時攜帶的信息。 |
活躍
protected void onActive()
回叫時的能力片進(jìn)入 ACTIVE狀態(tài)。
能力切片中的UI ACTIVE狀態(tài)已獲得焦點和是交互式的。
不活動時
protected void onInactive()
當(dāng)功能片進(jìn)入 INACTIVE 狀態(tài)時回調(diào) 。
INACTIVE是中間狀態(tài),并且可以立即改變到 ACTIVE 或背景。在此狀態(tài)下,功能片的 UI 可能可見,但不是交互式的。建議您不要使用此方法來觸發(fā)復(fù)雜的服務(wù)邏輯。
在前景上
protected void onForeground(Intent intent)
當(dāng)能力片的狀態(tài)從背景變?yōu)椴?活動時回調(diào) 。
能力切片返回到前景。您可以使用此方法來實現(xiàn)重新初始化或通過使用 intent 參數(shù)來調(diào)整 UI。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 指示能力切片返回不活動狀態(tài)時攜帶的信息。 |
在背景上
protected void onBackground()
技能片進(jìn)入背景狀態(tài)時回調(diào) 。
處于背景狀態(tài)的能力切片的用戶界面是不可見的,并且不是交互式的。建議您使用此方法停止或釋放資源。
停止
protected void onStop()
在摧毀能力片之前回叫。
功能切片調(diào)用 Terminate()方法后,將回調(diào)此方法。您可以使用此方法回收資源。
能力結(jié)果
protected void onAbilityResult(int requestCode,int resultCode,Intent resultData)
在調(diào)用 startAbilityForResult(ohos.aafwk.content.Intent,int)以啟動功能并返回結(jié)果時調(diào)用。
此方法提供的功能與該功能的Ability#onAbilityResult(int,int,Intent)方法相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 請求代碼 | 指示功能啟動后返回的請求代碼。您可以定義請求代碼以標(biāo)識能力返回的結(jié)果。取值范圍是0?65535。 |
| resultCode | 指示該功能啟動后返回的結(jié)果代碼。您可以定義結(jié)果代碼以識別錯誤。 |
| resultData | 指示該功能啟動后返回的數(shù)據(jù)。您可以定義返回的數(shù)據(jù)。該值可以為空。 |
也可以看看:
startAbilityForResult(Intent,int)
結(jié)果
protected void onResult(int requestCode,Intent resultIntent)
返回 presentForResult(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent,int)方法的結(jié)果時 回調(diào)。
當(dāng)調(diào)用presentForResult(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent,int)以啟動新的功能片時,銷毀功能片時將返回執(zhí)行結(jié)果。您可以重寫此方法來處理結(jié)果。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 請求代碼 | 指示能力切片啟動后返回的請求代碼。您可以定義請求代碼以標(biāo)識能力切片返回的結(jié)果。取值范圍是 0?65535。 |
| resultIntent | 指示銷毀起始異能之后返回的數(shù)據(jù)。此參數(shù)可以為空。 |
也可以看看:
presentForResult(AbilitySlice,Intent,int),setResult(Intent)
方向改變
受保護(hù)的 void onOrientationChanged((AbilityInfo.DisplayOrientation displayOrientation)
當(dāng)屏幕的顯示方向改變時回調(diào)。
當(dāng)顯示方向改變時,您可以重寫此方法以實現(xiàn)您的邏輯。默認(rèn)情況下,更改顯示方向時不執(zhí)行任何操作。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| displayOrientation | 指示新的顯示方向。支持以下值:DisplayOrientation#LANDSCAPE,DisplayOrientation#PORTRAIT,DisplayOrientation#FOLLOWRECENT和DisplayOrientation#UNSPECIFIED。 |
onBackPressed
protected void onBackPressed()
當(dāng)按下返回鍵時回叫。
默認(rèn)實現(xiàn)會破壞能力切片。您可以覆蓋此方法。
按下按鍵
public boolean onKeyDown(int keyCode,KeyEvent keyEvent)
按下鍵時調(diào)用。當(dāng) AbilitySlice 中的任何組件獲得焦點時,將首先處理該組件的按下事件。如果為組件的按下事件觸發(fā)的回調(diào)返回 true,則不會調(diào)用此回調(diào)。此回調(diào)的默認(rèn)實現(xiàn)不執(zhí)行任何操作,并返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 關(guān)鍵代碼 | 指示按下的鍵的代碼。 |
| keyEvent | 指示按下事件。 |
返回值:
如果已處理此事件且將不進(jìn)一步傳遞,則返回 true;否則,返回 false。如果未處理此事件,則應(yīng)返回 false并應(yīng)將其傳遞給其他處理程序。
也可以看看:
onKeyUp(int,ohos.multimodalinput.event.KeyEvent)
在關(guān)鍵
public boolean onKeyUp(int keyCode,KeyEvent keyEvent)
釋放鍵時調(diào)用。當(dāng) AbilitySlice 中的任何組件獲得焦點時,將首先處理該組件的按鍵事件。如果為組件的按鍵事件觸發(fā)的回調(diào)返回 true,則不會調(diào)用此回調(diào)。此回調(diào)的默認(rèn)實現(xiàn)不執(zhí)行任何操作,并返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 關(guān)鍵代碼 | 指示已釋放密鑰的代碼。 |
| keyEvent | 指示按鍵事件。 |
返回值:
如果已處理此事件且將不進(jìn)一步傳遞,則返回 true;否則,返回 false。如果未處理此事件,則應(yīng)返回false并應(yīng)將其傳遞給其他處理程序。
也可以看看:
onKeyDown(int,ohos.multimodalinput.event.KeyEvent)
字符串
公共string toString()
提供 impl 和相應(yīng)的切片信息,以方便人類閱讀。
覆寫:
類 Object中的toString
返回值:
字符串格式的信息。
獲取窗口
公共Window getWindow()
獲取與當(dāng)前能力對應(yīng)的窗口。
此方法提供的功能與 Ability#getWindow()方法相同。
返回值:
返回與當(dāng)前能力相對應(yīng)的窗口。
獲取布局參數(shù)
public WindowManager.LayoutConfig getLayoutParams()
獲取能力的窗口布局參數(shù)。必須為所有功能的窗口設(shè)置布局參數(shù)。為父窗口提供了這些參數(shù),以指定如何布置當(dāng)前功能的窗口。
此方法提供的功能與 Ability#getLayoutParams()方法相同。
返回值:
返回能力的窗口布局參數(shù);如果未設(shè)置布局參數(shù),則返回null。
設(shè)置布局參數(shù)
public void setLayoutParams(WindowManager.LayoutConfig 參數(shù))
設(shè)置功能的窗口布局參數(shù)。為父窗口提供了這些參數(shù),以指定如何布置當(dāng)前功能的窗口。
此方法提供的功能與 Ability#setLayoutParams(LayoutConfig)方法相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 參數(shù) | 指示包含布局參數(shù)的 WindowManager.LayoutConfig 對象。此參數(shù)不能為空。 |
設(shè)置環(huán)境模式
public void setIsAmbientMode(boolean isEnabled)
設(shè)置窗口的輸入 AOD 模式
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| isEnabled | 指示是否啟用了 AOD 模式 |
設(shè)置UI內(nèi)容
public final void setUIContent(int layoutRes)
通過使用布局資源 ID 來擴(kuò)大布局資源。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| layoutRes | 表示布局資源ID,不能為負(fù)數(shù)。 |
也可以看看:
setUIContent(ComponentContainer)
設(shè)置UI內(nèi)容
public void setUIContent((ComponentContainer componentContainer)
通過使用 ComponentContainer來膨脹 UI 控件 。
您可以創(chuàng)建一個包含多個組件的 ComponentContainer 實例。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| componentContainer | 指示一組定制組件。 |
也可以看看:
setUIContent(int)
按ID查找組件
public Component findComponentById(int resID)
根據(jù)資源 ID 在 XML 文件中查找組件。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 識別碼 | 指示組件的資源 ID。 |
返回值:
如果找到記錄,則返回與 ID 對應(yīng)的組件;否則返回 null。
當(dāng)下
public final void present(AbilitySlice targetSlice,Intent intent)
提供另一個能力切片,可以是尚未開始的能力切片或宿主能力中的現(xiàn)有能力切片。
您可以使用 Intent對象傳遞必需的信息。
僅在以下情況下可以調(diào)用此方法:
- 主機(jī)能力在 ACTIVE狀態(tài)。
- 目標(biāo)能力切片未啟動或破壞。
- 宿主技能中的技能片數(shù)不超過 1024。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| targetSlice | 指示目標(biāo)能力切片,不能為空。 |
| intent | 表示切換過程中攜帶的信息,不能為空。 |
也可以看看:
presentForResult(AbilitySlice,Intent,int)
呈現(xiàn)結(jié)果
public final void presentForResult(AbilitySlice targetSlice,Intent intent,int requestCode)
呈現(xiàn)另一個能力切片,并通過調(diào)用 setResult(ohos.aafwk.content.Intent) 返回目標(biāo)能力切片的結(jié)果集 。
您可以使用 Intent 對象傳遞必需的信息。
僅在以下情況下可以調(diào)用此方法:
- 目前的能力片的主機(jī)能力在 ACTIVE 狀態(tài)。
- 目標(biāo)能力切片未啟動或破壞。
- 主持人能力中有1024個或更少的能力切片。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| targetSlice | 指示目標(biāo)能力切片。此參數(shù)不能為空。 |
| Intent | 表示切換過程中攜帶的信息,不能為空。 |
| 請求代碼 | 指示定制的請求代碼,不能為負(fù)數(shù)。 |
也可以看看:
setResult(Intent),onResult(int,Intent)
設(shè)定結(jié)果
public final void setResult(Intent resultData)
設(shè)置銷毀能力切片時要返回的數(shù)據(jù)。
當(dāng)能力切片調(diào)用 Terminate()方法時,當(dāng)前方法設(shè)置的結(jié)果數(shù)據(jù)將傳輸?shù)秸{(diào)用方。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| resultData | 指示在破壞能力切片之后返回的數(shù)據(jù)。您可以定義返回的數(shù)據(jù)。該值可以為空。 |
也可以看看:
presentForResult(AbilitySlice,Intent,int),onResult(int,Intent)
終止
公共最終無效終止()
摧毀當(dāng)前能力切片。
當(dāng)前能力切片調(diào)用此方法銷毀自身時,由 setResult(ohos.aafwk.content.Intent)設(shè)置的結(jié)果數(shù)據(jù)將返回給調(diào)用方。如果要銷毀的片是其宿主能力的唯一片,則該能力也將被摧毀。否則,該能力將不會受到影響。
啟動能力
public void startAbility(Intent intent)
開始一項新技能。
技能切片也可以使用此方法來啟動新技能。與 Ability#startAbility(Intent)方法的功能相似,系統(tǒng)會根據(jù)intent參數(shù)的值從已安裝的能力中定位目標(biāo)能力,然后啟動它。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 指示啟動的能力。 |
啟動能力
public void startAbility(Intent intent,AbilityOptions 選項)
從選項開始新技能。
技能切片也可以使用此方法來啟動新技能。與 Ability#startAbility(Intent,AbilityOptions)方法的功能相似,系統(tǒng)會根據(jù) intent 參數(shù)的值從已安裝的能力中定位目標(biāo)能力,然后啟動它。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| intent | 指示啟動的能力。 |
| 選項 | 能力選項轉(zhuǎn)移到其他能力。 |
開始結(jié)果的能力
public void startAbilityForResult(Intent intent,int requestCode)
啟動一個異能并在該異能被銷毀時返回執(zhí)行結(jié)果。
此方法提供的功能與 Ability#startAbilityForResult(Intent,int)方法相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 指示啟動的能力。 |
| 請求代碼 | 指示功能啟動后返回的請求代碼。您可以定義請求代碼以標(biāo)識能力返回的結(jié)果。取值范圍是 0?65535。 |
也可以看看:
onAbilityResult(int,int,Intent)
停止能力
public final boolean stopAbility(Intent intent)throws IllegalArgumentException,IllegalStateException
破壞使用服務(wù)模板的能力。
此方法提供的功能與 Ability#stopAbility(Intent)方法相同。
指定者:
接口ContextstopAbility
覆寫:
stopAbility 類 AbilityContext
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 表示使用服務(wù)模板的能力。 |
返回值:
如果成功銷毀了使用服務(wù)模板的能力,則返回 true;否則,返回 true。否則返回 false。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalArgumentException | 如果輸入?yún)?shù)為 null,則Throws此異常。 |
| IllegalStateException | 如果功能未初始化,則Throws此異常。 |
也可以看看:
Context.stopAbility(Intent)
終止能力
公共無效 terminateAbility()
破壞主機(jī)能力。
此方法提供的功能與 Ability#terminateAbility()方法相同。
指定者:
接口 Context中的 terminateAbility
覆寫:
terminateAbility 類 AbilityContext
也可以看看:
Context.terminateAbility()
連接能力
public final boolean connectAbility(Intent intent,IAbilityConnection conn)throws IllegalArgumentException,IllegalStateException
將主持人能力與使用服務(wù)模板的能力聯(lián)系起來。
此方法提供的功能與 Ability#connectAbility(Intent,IAbilityConnection)方法相同。
指定者:
接口Context connectAbility
覆寫:
類 AbilityContext 中的connectAbility
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| Intent | 表示使用服務(wù)模板的能力。 |
| 康恩 | 指示連接能力切片時轉(zhuǎn)移的回調(diào)對象。 |
返回值:
如果連接成功,則返回 true;否則,返回 false。否則返回 false。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果能力或能力切片未初始化,則Throws此異常。 |
| IllegalArgumentException | 如果輸入?yún)?shù)為 null,則Throws此異常。 |
也可以看看:
Context.connectAbility(Intent,IAbilityConnection)
斷開能力
public final void disconnectAbility(IAbilityConnection conn)throws IllegalArgumentException,IllegalStateException
將主機(jī)功能與使用服務(wù)模板的功能斷開連接。
此方法提供的功能與 Ability#disconnectAbility(IAbilityConnection)方法相同。
指定者:
接口ContextdisconnectAbility
覆寫:
disconnectAbility 類 AbilityContext
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 康恩 | 指示連接能力切片時轉(zhuǎn)移的回調(diào)對象。 |
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果能力或能力切片未初始化,則Throws此異常。 |
| IllegalArgumentException | 如果輸入?yún)?shù)為 null,則Throws此異常。 |
也可以看看:
Context.disconnectAbility(IAbilityConnection)
繼續(xù)能力
public final boolean connectAbility?(Intent intent, IAbilityConnection conn) throws IllegalArgumentException, IllegalStateException
Connects the host ability to an ability that uses the Service template.
將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備。
此方法提供的功能與 Ability#continueAbility()方法相同。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果主機(jī)能力未初始化或處于不允許此操作的狀態(tài)(例如正在遷移),則Throws此異常。 |
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
繼續(xù)能力
公共無效的 continuAbility (string deviceId)Throws IllegalStateException,UnsupportedOperationException
將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的給定設(shè)備。
此方法提供的功能與 Ability#continueAbility(String)方法相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 設(shè)備編號 | 指示主機(jī)功能將遷移到的目標(biāo)設(shè)備的 ID。如果此參數(shù)為 null,則此方法與 continueAbility()具有相同的效果。 |
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果主機(jī)能力未初始化或處于不允許此操作的狀態(tài)(例如正在遷移),則Throws此異常。 |
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
連續(xù)能力可逆
公共無效的 continueAbilityReversible()Throws IllegalStateException,UnsupportedOperationException
以可逆的方式將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備,該功能允許將該功能通過 reverseContinueAbility()遷移回本地設(shè)備 。
此方法提供的功能與 Ability#continueAbilityReversible() 方法相同。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果主機(jī)能力未初始化或處于不允許此操作的狀態(tài)(例如正在遷移),則Throws此異常。 |
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
連續(xù)能力可逆
public void continueAbility (String deviceId) throws IllegalStateException,UnsupportedOperationException
以可逆的方式將主機(jī)功能遷移到同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備,該功能允許將該功能通過reverseContinueAbility()遷移回本地設(shè)備 。
此方法提供的功能與 Ability#continueAbilityReversible(String)方法相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 設(shè)備編號 | 指示主機(jī)功能將遷移到的目標(biāo)設(shè)備的ID。如果此參數(shù)為null,則此方法與 continueAbilityReversible()具有相同的效果。 |
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果主機(jī)能力未初始化或處于不允許此操作的狀態(tài)(例如正在遷移),則Throws此異常。 |
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
反向連續(xù)能力
public boolean reverseContinueAbility()throws IllegalStateException,UnsupportedOperationException
將主機(jī)功能從同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備遷移回本地設(shè)備。
此方法提供的功能與 Ability#reverseContinueAbility() 方法相同。
返回值:
如果遷移請求成功,則返回 true;否則,返回 true。否則返回 false。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| IllegalStateException | 如果宿主功能未涉及可逆遷移過程,或者處于不允許此操作的狀態(tài)(例如正在將其遷移回),則Throws此異常。 |
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
獲取延續(xù)狀態(tài)
public final ContinuationState getContinuationState() throws UnsupportedOperationException
獲得宿主能力的遷移狀態(tài)。
此方法提供的功能與 Ability#getContinuationState()方法相同。
返回值:
返回遷移狀態(tài)。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
獲取原始 DeviceId
公共最終string getOriginalDeviceId()Throws UnsupportedOperationException
獲取從其遷移主機(jī)功能的源設(shè)備的 ID。
此方法提供的功能與 Ability#getOriginalDeviceId()方法相同。
返回值:
返回源設(shè)備 ID。
Throws:
| Throws名稱 | Throws說明 |
|---|---|
| UnsupportedOperationException | 如果主持人功能未實現(xiàn) IAbilityContinuation 接口,則Throws此異常。 |
設(shè)置顯示方向
public void setDisplayOrientation(AbilityInfo.DisplayOrientation requestedOrientation)
設(shè)置主持人能力的顯示方向。
After you change the display orientation using this method, the system calls back the onOrientationChanged(ohos.bundle.AbilityInfo.DisplayOrientation) method. If requestedOrientation is set to DisplayOrientation#UNSPECIFIED, the display orientation of the ability depends on the system setting.
如果某個能力處于前臺,該設(shè)置將立即生效。否則,該設(shè)置將在該異能返回到前景時生效。
指定者:
接口 Context中的setDisplayOrientation
覆寫:
類 AbilityContext中的setDisplayOrientation
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 請求的方向 | 指示顯示方向,可以是“ jpg”,“ LANDSCAPE”,“ PORTRAIT”或“ FOLLOWRECENT”。 |
也可以看看:
Context.setDisplayOrientation(AbilityInfo.DisplayOrientation)
獲取能力形式異步
public boolean acquisitionAbilityFormAsync(Intent intent,AbilityForm.OnAcquiredCallback createdCallback)
請求目標(biāo)能力提供的 AbilityForm 實例。
此方法異步執(zhí)行。獲取 AbilityForm 實例后,系統(tǒng)將回調(diào) OnAcquiredCallback 方法。如果目標(biāo)功能不使用 Page 模板或不提供 AbilityForm 功能,則不會通知呼叫者。
要使用此方法,您的應(yīng)用程序必須具有 ohos.permission.REQUIRE_FORM 權(quán)限。該權(quán)限僅適用于系統(tǒng)應(yīng)用程序。如果呼叫者沒有權(quán)限,則返回 false。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| intent | 指示目標(biāo)能力。 |
| earnedCallback | 指示異步獲取 AbilityForm 實例后的通知回調(diào)。 |
返回值:
如果請求發(fā)送成功,則返回 true;否則,返回 false。否則返回 false。
釋放能力表
公共無效發(fā)布 AbilityForm(AbilityForm 能力表單)
釋放主機(jī)能力的指定 AbilityForm 實例。
參數(shù):
| 參數(shù)名稱 | 參數(shù)說明 |
|---|---|
| 能力表 | 指示要釋放的 AbilityForm 實例。 |
獲取生命周期
public final Lifecycle getLifecycle()
獲取當(dāng)前能力切片的 Lifecycle對象。
指定者:
getLifecycle 接口 ILifecycle
返回值:
返回Lifecycle對象。
獲得能力
public final Ability getAbility()
獲得該切片所屬的能力。
返回值:
歸還能力。
新聞名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS Ability AbilitySlice
網(wǎng)頁地址:http://fisionsoft.com.cn/article/dpsghio.html


咨詢
建站咨詢
