找回密码
 立即注册
首页 业界区 业界 ArkUI-X中Plugin生命周期开发指南

ArkUI-X中Plugin生命周期开发指南

轨项尺 6 天前
ArkUI-X插件用于拓展ArkUI应用的能力,提供管理插件生命周期的能力。本文主要介绍Android平台的ArkUI-X插件生命周期的使用。
Android平台创建ArkUI-X插件生命周期

在Android平台创建ArkUI-X插件生命周期需要实现IArkUIXPlugin接口。
  1. // PluginTest.java
  2. import ohos.ace.adapter.IArkUIXPlugin;
  3. import ohos.ace.adapter.PluginContext;
  4. import ohos.ace.adapter.capability.bridge.BridgePlugin;
  5. public class PluginTest implements IArkUIXPlugin {
  6.     public Bridge myBridge = null;
  7.     @Override
  8.     public void onRegistry(PluginContext pluginContext) {
  9.         // 创建插件以及插件初始化
  10.         myBridge = new MyBridge(pluginContext.getContext(), "MyTestBridge",
  11.                                       pluginContext.getBridgeManager());
  12.     }
  13.     @Override
  14.     public void onUnRegistry(PluginContext pluginContext) {
  15.         // 释放插件资源
  16.         if (myBridge != null) {
  17.             myBridge = null;
  18.         }
  19.     }
  20. }
复制代码
添加ArkUI-X插件

在StageActivity中,新增addPlugin11+方法,并以字符串形式提供IArkUIXPlugin的实现类的完整包名,用于将开发者实现IArkUIXPlugin接口的对象添加到StageActivity中。addPlugin方法声明如下:
  1. class StageActivity extents Activity implements KeyboardHeightObserver {
  2.     // add ArkUI-X plugin to list for registry.
  3.     // 参数:pluginName: 实现插件的完整包名
  4.         public void addPlugin(String pluginName);
  5. }
复制代码
在StageActivity的onCreate()中触发onRegistry()方法,通知开发者创建插件;在StageActivity的onDestroy()中触发onUnRegistry()方法,通知开发者销毁插件。
注意:开发者调用addPlugin()方法,必须位于调用超类的onCreate()方法之前,如下:
  1. // EntryEntryAbilityActivity,java
  2. import android.os.Bundle;
  3. import ohos.stage.ability.adapter.StageActivity;
  4. public class EntryEntryAbilityActivity extends StageActivity {
  5.     @Override
  6.     public void onCreate(Bundle savedInstanceState) {
  7.         // 必须在super.onCreate()之前添加,因为在超类的onCreate()中要调用addPlugin()添加的对象
  8.         addPlugin("com.example.pluginlifecycle.PluginTest");
  9.         setInstanceName("com.example.pluginlifecycle:entry:EntryAbility:");
  10.         super.onCreate(savedInstanceState);
  11.     }
  12. }
复制代码
示例

Bridge相关具体参考
  1. // PluginTest.java
  2. import ohos.ace.adapter.IArkUIXPlugin;
  3. import ohos.ace.adapter.PluginContext;
  4. import ohos.ace.adapter.capability.bridge.BridgePlugin;
  5. public class PluginTest implements IArkUIXPlugin {
  6.    public Bridge myBridge = null;
  7.     // 在 EntryEntryAbilityActivity 的 onCreate 时被触发
  8.     @Override
  9.     public void onRegistry(PluginContext pluginContext) {
  10.        // 创建插件以及插件初始化
  11.        myBridge = new MyBridge(pluginContext.getContext(), "MyTestBridge",
  12.                                       pluginContext.getBridgeManager());
  13.     }
  14.    
  15.     // 在EntryEntryAbilityActivity 的 onDestroy 时被触发
  16.     @Override
  17.     public void onUnRegistry(PluginContext pluginContext) {
  18.                 // 释放插件资源
  19.         if (myBridge != null) {
  20.             myBridge = null;
  21.         }
  22.     }
  23. }
复制代码
注册插件示例如下:
  1. // EntryEntryAbilityActivity,java
  2. import android.os.Bundle;
  3. import ohos.stage.ability.adapter.StageActivity;
  4. public class EntryEntryAbilityActivity extends StageActivity {
  5.     @Override
  6.     public void onCreate(Bundle savedInstanceState) {
  7.         addPlugin("com.example.pluginlifecycle.PluginTest");
  8.         setInstanceName("com.example.pluginlifecycle:entry:EntryAbility:");
  9.         super.onCreate(savedInstanceState);
  10.     }
  11. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册