鴻蒙OS Ability AbilitySlice

2020-10-27 11:00 更新

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

一個能力可以有多個能力切片。您必須重寫 Ability#onStart(Intent)方法以指定默認(rèn)的能力切片。通過使用 Ability#setMainRoute(String)指定此默認(rèn)路由。

您可以繼承 AbilitySlice 類來實(shí)現(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)方法來啟動新能力。

能力切片必須始終托管在一個能力中,并且其生命周期會隨著能力的變化而變化。功能片還具有其獨(dú)立的生命周期更改,該更改在功能片切換期間發(fā)生。

注意:在大多數(shù)情況下,您負(fù)責(zé)創(chuàng)建和維護(hù)能力切片實(shí)例。但是,系統(tǒng)會在某些情況下創(chuàng)建實(shí)例。例如,系統(tǒng)在能力的首次啟動期間創(chuàng)建能力切片實(shí)例。這要求所有 AbilitySlice 子類都具有默認(rèn)的無參數(shù)構(gòu)造函數(shù)。根據(jù) Java 的定義,僅當(dāng)您未顯式聲明參數(shù)化構(gòu)造函數(shù)時(shí),編譯器才會為該類提供默認(rèn)的無參數(shù)構(gòu)造函數(shù)。因此,在覆蓋 AbilitySlice 子類時(shí),如果您的實(shí)現(xiàn)具有參數(shù)化構(gòu)造函數(shù),則必須顯式聲明一個無參數(shù)構(gòu)造函數(shù)。

使用頁面模板輸入能力

您可以指定多個動作條目和一個功能的默認(rèn)主條目。每個條目代表功能和該功能可以提供的 UI。啟動一項(xiàng)功能后,系統(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());
     }
 }

 

前面的代碼僅定義運(yùn)行時(shí)的入口路由。要將能力的功能暴露給其他能力,必須在配置文件 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)方法。功能切片也可以具有其獨(dú)立的生命周期更改。在切換能力中的能力切片期間會發(fā)生此獨(dú)立更改。但是,這樣的切換不會影響宿主能力的生命周期。

能力切片具有以下四個生命周期狀態(tài):

  • 初始:能力切片已加載到內(nèi)存中,但未運(yùn)行。它是所有能力切片的初始狀態(tài)。
  • 不活躍:能力切片已加載并執(zhí)行,但不是交互式的。通常,在能力切片變?yōu)?ACTIVE Background 之前是中間狀態(tài)。在此狀態(tài)下功能切片的 UI 可能可見,但無法接收輸入事件。
  • 活動:能力切片可見且具有交互性。認(rèn)為能力切片具有焦點(diǎ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();
  }

 

 

下圖顯示了能力切片的完整生命周期。一個能力切片在任何時(shí)候都只能處于一種狀態(tài)。并非所有州都支持直接過渡。

img

注意:onStart(ohos.aafwk.content.Intent)方法在整個生命周期中只能調(diào)用一次。

下面提供了每種生命周期回調(diào)方法的含義以及一些最佳實(shí)踐建議。

  • onStart(ohos.aafwk.content.Intent):必須為 UI 初始化設(shè)置實(shí)現(xiàn)此方法,例如 setUIContent(int)。在整個生命周期中只能調(diào)用一次此方法。調(diào)用方可以使用Intent類攜帶一些自定義的鍵值,并通過intent提供的方法獲取這些參數(shù)。
  • onActive():當(dāng)功能片返回活動狀態(tài)時(shí),將調(diào)用此方法?;卣{(diào)之后,UI 是交互式的。
  • onInactive():當(dāng)能力切片被完全或部分覆蓋時(shí),將調(diào)用此方法。回調(diào)后,UI 不交互式。
  • onForeground(ohos.aafwk.content.Intent)()}:當(dāng)功能片返回到前景時(shí),將調(diào)用此方法??梢栽诨卣{(diào)中恢復(fù)或初始化應(yīng)用程序的交互邏輯。如果在能力切片返回到前景時(shí)需要指定新的自定義參數(shù),則可以傳輸新的Intent參數(shù)。
  • onBackground():當(dāng)能力切片進(jìn)入背景時(shí),將調(diào)用此方法。在這種狀態(tài)下,您不能長時(shí)間執(zhí)行后臺任務(wù),因?yàn)橄到y(tǒng)可能會隨時(shí)停止后臺程序的運(yùn)行。
  • 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);
     });

 

 

注意:一個能力中最多可以同時(shí)顯示 1024 個能力切片。如果嘗試顯示第 1025 個異能切片,系統(tǒng)將強(qiáng)制使該異能崩潰。為了避免這種情況,如果需要同時(shí)顯示大量能力切片,則必須改進(jìn)代碼。

領(lǐng)域摘要

從接口 ohos.app 繼承的字段。Context
CONTEXT_IGNORE_SECURITY,CONTEXT_INCLUDE_CODE,<br />CONTEXT_RESOUCE_ONLY,CONTEXT_RESTRICTEDMODE_APPEND,MODE_PRIVATE

構(gòu)造器摘要

建設(shè)者 描述
AbilitySlice()

方法總結(jié)

修飾符和類型 方法 描述
布爾值 acquireAbilityFormAsync(Intent intent,AbilityForm.OnAcquiredCallback acquisitionCallback 請求目標(biāo)能力提供的 AbilityForm 實(shí)例。
布爾值 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é)果時(shí)調(diào)用。
protected void onActive() 回叫時(shí)的能力片進(jìn)入 ACTIVE 狀態(tài)。
protected void onBackground() 技能片進(jìn)入背景狀態(tài)時(shí)回調(diào)。
protected void onBackPressed() 當(dāng)按下返回鍵時(shí)回叫。
protected void onForeground (Intent intent) 當(dāng)能力片的狀態(tài)從背景變?yōu)椴?strong>活動時(shí)回調(diào)。
protected void onInactive() 當(dāng)功能片進(jìn)入 INACTIVE 狀態(tài)時(shí)回調(diào)。
布爾值 onKeyDown(int keyCode,KeyEvent keyEvent) 按下鍵時(shí)調(diào)用。
布爾值 onKeyUp(int keyCode,KeyEvent keyEvent) 釋放鍵時(shí)調(diào)用。
protected void onOrientationChanged(AbilityInfo.DisplayOrientation displayOrientation) 當(dāng)屏幕的顯示方向改變時(shí)回調(diào)。
protected void onResult(int requestCode,Intent resultIntent) 返回presentForResult(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent,int)方法的結(jié)果時(shí)回調(diào)。
protected void 在onStart(Intent intent) 開始功能切片時(shí)回調(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 實(shí)例。
布爾值 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í)要返回的數(shù)據(jù)。
void setUIContent(int layoutRes) 通過使用布局資源 ID 來擴(kuò)大布局資源。
void setUIContent(ComponentContainer componentContainer) 通過使用 ComponentContainer來膨脹 UI 控件。
void startAbility(Intent intent) 開始一項(xiàng)新技能。
void startAbility(Intent intent,AbilityOptions 選項(xiàng)) 從選項(xiàng)開始新技能。
void startAbilityForResult(Intent intent,int requestCode) 啟動一個異能并在該異能被銷毀時(shí)返回執(zhí)行結(jié)果。
布爾值 stopAbility(Intent intent) 破壞使用服務(wù)模板的能力。
void 終止() 摧毀當(dāng)前能力切片。
void 終止能力() 破壞主機(jī)能力。
String toString() 提供 impl 和相應(yīng)的切片信息,以方便人類閱讀。
從類 ohos.app 繼承的方法。AbilityContext
attachBaseContext,canRequestPermission,createBundleContext,createParallelTaskDispatcher,<br />createSerialTaskDispatcher,DELETEFILEgetAbilityInfo,getAbilityManagergetApplicationContext,<br />getApplicationInfogetAppType,getBundleCodePathgetBundleManager,getBundleName,<br />getBundleResourcePathgetCacheDir,getCallingAbilitygetCallingBundle,getClassloader,<br />getCodeCacheDir,的getContextgetDatabaseDir,getDataDir,GETDIR,getDisplayOrientation,<br />getDistributedDir,getElementName,getExternalCacheDirgetExternalCacheDirs,getExternalFilesDir,<br />getExternalFilesDirsgetExternalMediaDirs,getFilesDir,getGlobalTaskDispatcher,getLocalClassName,<br />getMainTaskDispatcher,getNoBackupFilesDirgetPattern,getPreferencesDirgetProcessInfo,<br />getResourceManager,getTheme,getUITaskDispatcher初始化,isDeviceEncryptedStorage,<br />isUpdatingConfigurations,requestPermissionsFromUser,重啟,setPattern,setShowOnLockScreen,<br />setTheme,setTransitionAnimation,setWakeUpScreen,startAbilities,起動性能,<br />switchToCredentialEncryptedStorageContext
switchToDeviceEncryptedStorageContext,<br />terminateAbility,terminateAbilityResult,verifyCallingOrSelfPermissionverifyCallingPermission,<br />verifyPermission,verifySelfPermission
從類 java.lang繼承的方法。object
clone,equalsfinalize,getClass,hashCode,notifynotifyAll,wait,waitwait

構(gòu)造器詳細(xì)信息

能力切片

公共 AliceSlice()

方法細(xì)節(jié)

onStart

受保護(hù)的 void onStart(Intent intent)

開始功能切片時(shí)回調(diào)。使用 intent 參數(shù)傳送啟動信息。

您必須為每個功能切片覆蓋此方法,并使用 setUIContent(int)或setUIContent(ohos.agp.components.ComponentContainer)方法來設(shè)置 UI。

在能力切片的整個Lifecycle中只能調(diào)用一次此方法。因此,建議您使用此方法來實(shí)現(xiàn)初始化,例如,初始化計(jì)時(shí)器或定義全局對象。

參數(shù):

參數(shù)名稱 參數(shù)說明
Intent 指示能力切片開始時(shí)攜帶的信息。

活躍

protected void onActive()

回叫時(shí)的能力片進(jìn)入 ACTIVE 狀態(tài)。

能力切片中的UI ACTIVE 狀態(tài)已獲得焦點(diǎn)和是交互式的。

不活動時(shí)

protected void onInactive()

當(dāng)功能片進(jìn)入 INACTIVE 狀態(tài)時(shí)回調(diào) 。

INACTIVE 是中間狀態(tài),并且可以立即改變到 ACTIVE背景。在此狀態(tài)下,功能片的 UI 可能可見,但不是交互式的。建議您不要使用此方法來觸發(fā)復(fù)雜的服務(wù)邏輯。

在前景上

protected void onForeground(Intent intent)

當(dāng)能力片的狀態(tài)從背景變?yōu)椴?活動時(shí)回調(diào) 。

能力切片返回到前景。您可以使用此方法來實(shí)現(xiàn)重新初始化或通過使用 intent 參數(shù)來調(diào)整 UI。

參數(shù):

參數(shù)名稱 參數(shù)說明
Intent 指示能力切片返回不活動狀態(tài)時(shí)攜帶的信息。

在背景上

protected void onBackground()

技能片進(jìn)入背景狀態(tài)時(shí)回調(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é)果時(shí)調(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é)果時(shí) 回調(diào)。

當(dāng)調(diào)用presentForResult(ohos.aafwk.ability.AbilitySlice,ohos.aafwk.content.Intent,int)以啟動新的功能片時(shí),銷毀功能片時(shí)將返回執(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)屏幕的顯示方向改變時(shí)回調(diào)。

當(dāng)顯示方向改變時(shí),您可以重寫此方法以實(shí)現(xiàn)您的邏輯。默認(rèn)情況下,更改顯示方向時(shí)不執(zhí)行任何操作。

參數(shù):

參數(shù)名稱 參數(shù)說明
displayOrientation 指示新的顯示方向。支持以下值:DisplayOrientation#LANDSCAPE,DisplayOrientation#PORTRAIT,DisplayOrientation#FOLLOWRECENTDisplayOrientation#UNSPECIFIED。

onBackPressed

protected void onBackPressed()

當(dāng)按下返回鍵時(shí)回叫。

默認(rèn)實(shí)現(xiàn)會破壞能力切片。您可以覆蓋此方法。

按下按鍵

public boolean onKeyDown(int keyCode,KeyEvent keyEvent)

按下鍵時(shí)調(diào)用。當(dāng) AbilitySlice 中的任何組件獲得焦點(diǎn)時(shí),將首先處理該組件的按下事件。如果為組件的按下事件觸發(fā)的回調(diào)返回 true,則不會調(diào)用此回調(diào)。此回調(diào)的默認(rèn)實(shí)現(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)

釋放鍵時(shí)調(diào)用。當(dāng) AbilitySlice 中的任何組件獲得焦點(diǎn)時(shí),將首先處理該組件的按鍵事件。如果為組件的按鍵事件觸發(fā)的回調(diào)返回 true,則不會調(diào)用此回調(diào)。此回調(diào)的默認(rèn)實(shí)現(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ù)名稱 參數(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í)要返回的數(shù)據(jù)。

當(dāng)能力切片調(diào)用 Terminate()方法時(shí),當(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)用此方法銷毀自身時(shí),由 setResult(ohos.aafwk.content.Intent)設(shè)置的結(jié)果數(shù)據(jù)將返回給調(diào)用方。如果要銷毀的片是其宿主能力的唯一片,則該能力也將被摧毀。否則,該能力將不會受到影響。

啟動能力

public void startAbility(Intent intent)

開始一項(xiàng)新技能。

技能切片也可以使用此方法來啟動新技能。與 Ability#startAbility(Intent)方法的功能相似,系統(tǒng)會根據(jù)intent參數(shù)的值從已安裝的能力中定位目標(biāo)能力,然后啟動它。

參數(shù):

參數(shù)名稱 參數(shù)說明
Intent 指示啟動的能力。

啟動能力

public void startAbility(Intent intent,AbilityOptions 選項(xiàng))

從選項(xiàng)開始新技能。

技能切片也可以使用此方法來啟動新技能。與 Ability#startAbility(Intent,AbilityOptions)方法的功能相似,系統(tǒng)會根據(jù) intent 參數(shù)的值從已安裝的能力中定位目標(biāo)能力,然后啟動它。

參數(shù):

參數(shù)名稱 參數(shù)說明
intent 指示啟動的能力。
選項(xiàng) 能力選項(xiàng)轉(zhuǎn)移到其他能力。

開始結(jié)果的能力

public void startAbilityForResult(Intent intent,int requestCode)

啟動一個異能并在該異能被銷毀時(shí)返回執(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 IllegalArgumentExceptionIllegalStateException

破壞使用服務(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ù)模板的能力。
康恩 指示連接能力切片時(shí)轉(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 IllegalArgumentExceptionIllegalStateException

將主機(jī)功能與使用服務(wù)模板的功能斷開連接。

此方法提供的功能與 Ability#disconnectAbility(IAbilityConnection)方法相同。

指定者:

接口ContextdisconnectAbility

覆寫:

disconnectAbility AbilityContext

參數(shù):

參數(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 如果主持人功能未實(shí)現(xiàn) IAbilityContinuation 接口,則Throws此異常。

繼續(xù)能力

公共無效的 continuAbility (string deviceId)Throws IllegalStateExceptionUnsupportedOperationException

將主機(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 如果主持人功能未實(shí)現(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 如果主持人功能未實(shí)現(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 如果主持人功能未實(shí)現(xiàn) IAbilityContinuation 接口,則Throws此異常。

反向連續(xù)能力

public boolean reverseContinueAbility()throws IllegalStateExceptionUnsupportedOperationException

將主機(jī)功能從同一分布式網(wǎng)絡(luò)上的另一臺設(shè)備遷移回本地設(shè)備。

此方法提供的功能與 Ability#reverseContinueAbility() 方法相同。

返回值:

如果遷移請求成功,則返回 true;否則,返回 true。否則返回 false。

Throws:

Throws名稱 Throws說明
IllegalStateException 如果宿主功能未涉及可逆遷移過程,或者處于不允許此操作的狀態(tài)(例如正在將其遷移回),則Throws此異常。
UnsupportedOperationException 如果主持人功能未實(shí)現(xiàn) IAbilityContinuation 接口,則Throws此異常。

獲取延續(xù)狀態(tài)

public final ContinuationState getContinuationState() throws UnsupportedOperationException

獲得宿主能力的遷移狀態(tài)。

此方法提供的功能與 Ability#getContinuationState()方法相同。

返回值:

返回遷移狀態(tài)。

Throws:

Throws名稱 Throws說明
UnsupportedOperationException 如果主持人功能未實(shí)現(xiàn) IAbilityContinuation 接口,則Throws此異常。

獲取原始 DeviceId

公共最終string getOriginalDeviceId()Throws UnsupportedOperationException

獲取從其遷移主機(jī)功能的源設(shè)備的 ID。

此方法提供的功能與 Ability#getOriginalDeviceId()方法相同。

返回值:

返回源設(shè)備 ID。

Throws:

Throws名稱 Throws說明
UnsupportedOperationException 如果主持人功能未實(shí)現(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è)置將在該異能返回到前景時(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 實(shí)例。

此方法異步執(zhí)行。獲取 AbilityForm 實(shí)例后,系統(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 實(shí)例后的通知回調(diào)。

返回值:

如果請求發(fā)送成功,則返回 true;否則,返回 false。否則返回 false。

釋放能力表

公共無效發(fā)布 AbilityForm(AbilityForm 能力表單)

釋放主機(jī)能力的指定 AbilityForm 實(shí)例。

參數(shù):

參數(shù)名稱 參數(shù)說明
能力表 指示要釋放的 AbilityForm 實(shí)例。

獲取生命周期

public final Lifecycle getLifecycle()

獲取當(dāng)前能力切片的 Lifecycle對象。

指定者:

getLifecycle 接口 ILifecycle

返回值:

返回Lifecycle對象。

獲得能力

public final Ability getAbility()

獲得該切片所屬的能力。

返回值:

歸還能力。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號