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

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

Android平台创建ArkUI-X插件生命周期

在Android平台创建ArkUI-X插件生命周期需要实现IArkUIXPlugin接口。

// PluginTest.java import ohos.ace.adapter.IArkUIXPlugin; import ohos.ace.adapter.PluginContext; import ohos.ace.adapter.capability.bridge.BridgePlugin;  public class PluginTest implements IArkUIXPlugin {     public Bridge myBridge = null;     @Override     public void onRegistry(PluginContext pluginContext) {         // 创建插件以及插件初始化         myBridge = new MyBridge(pluginContext.getContext(), "MyTestBridge",                                        pluginContext.getBridgeManager());     }     @Override     public void onUnRegistry(PluginContext pluginContext) {         // 释放插件资源         if (myBridge != null) {             myBridge = null;         }     } } 

添加ArkUI-X插件

在StageActivity中,新增addPlugin11+方法,并以字符串形式提供IArkUIXPlugin的实现类的完整包名,用于将开发者实现IArkUIXPlugin接口的对象添加到StageActivity中。addPlugin方法声明如下:

class StageActivity extents Activity implements KeyboardHeightObserver {     // add ArkUI-X plugin to list for registry.     // 参数:pluginName: 实现插件的完整包名 	public void addPlugin(String pluginName);  } 

在StageActivity的onCreate()中触发onRegistry()方法,通知开发者创建插件;在StageActivity的onDestroy()中触发onUnRegistry()方法,通知开发者销毁插件。

注意:开发者调用addPlugin()方法,必须位于调用超类的onCreate()方法之前,如下:

// EntryEntryAbilityActivity,java import android.os.Bundle; import ohos.stage.ability.adapter.StageActivity;  public class EntryEntryAbilityActivity extends StageActivity {     @Override     public void onCreate(Bundle savedInstanceState) {         // 必须在super.onCreate()之前添加,因为在超类的onCreate()中要调用addPlugin()添加的对象         addPlugin("com.example.pluginlifecycle.PluginTest");         setInstanceName("com.example.pluginlifecycle:entry:EntryAbility:");          super.onCreate(savedInstanceState);     } } 

示例

Bridge相关具体参考

// PluginTest.java import ohos.ace.adapter.IArkUIXPlugin; import ohos.ace.adapter.PluginContext; import ohos.ace.adapter.capability.bridge.BridgePlugin;  public class PluginTest implements IArkUIXPlugin {    public Bridge myBridge = null;     // 在 EntryEntryAbilityActivity 的 onCreate 时被触发     @Override     public void onRegistry(PluginContext pluginContext) {        // 创建插件以及插件初始化        myBridge = new MyBridge(pluginContext.getContext(), "MyTestBridge",                                        pluginContext.getBridgeManager());     }          // 在EntryEntryAbilityActivity 的 onDestroy 时被触发     @Override     public void onUnRegistry(PluginContext pluginContext) { 		// 释放插件资源         if (myBridge != null) {             myBridge = null;         }     } } 

注册插件示例如下:

// EntryEntryAbilityActivity,java import android.os.Bundle; import ohos.stage.ability.adapter.StageActivity;  public class EntryEntryAbilityActivity extends StageActivity {     @Override     public void onCreate(Bundle savedInstanceState) {         addPlugin("com.example.pluginlifecycle.PluginTest");         setInstanceName("com.example.pluginlifecycle:entry:EntryAbility:");         super.onCreate(savedInstanceState);     } } 

发表评论

评论已关闭。

相关文章