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

举报
yd_233809488 发表于 2025/06/04 22:28:26 2025/06/04
【摘要】 ArkUI-X插件用于拓展ArkUI应用的能力,提供管理插件生命周期的能力。本文主要介绍Android平台的ArkUI-X插件生命周期的使用。 Android平台创建ArkUI-X插件生命周期在Android平台创建ArkUI-X插件生命周期需要实现IArkUIXPlugin接口。// PluginTest.javaimport ohos.ace.adapter.IArkUIXPlugin;...

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);
    }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。