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);
}
}
ArkUI-X中Plugin生命周期开发指南的更多相关文章
- 12、Cocos2dx 3.0游戏开发找小三之3.0中的生命周期分析
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我们执行了第 ...
- 了解angularjs中的生命周期钩子函数$onInit,$onChange,$onDestory,$postLink
壹 ❀ 引 我在前面花了三篇文章用于介绍angularjs的指令directive,组件component,并专门花了一篇文章介绍directive与component的不同,其中提到在compon ...
- 《React Native 精解与实战》书籍连载「React Native 中的生命周期」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- 文盘Rust -- struct 中的生命周期
最近在用rust 写一个redis的数据校验工具.redis-rs中具备 redis::ConnectionLike trait,借助它可以较好的来抽象校验过程.在开发中,不免要定义struct 中的 ...
- Java对象在JVM中的生命周期
当你通过new语句创建一个java对象时,JVM就会为这个对象分配一块内存空间,只要这个对象被引用变量引用了,那么这个对象就会一直驻留在内存中,否则,它就会结束生命周期,JVM会在合适的时 ...
- [转] IOS中AppDelegate中的生命周期事件的调用条件
IOS中AppDelegate中的生命周期事件的调用条件 //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResign ...
- Vue 实例中的生命周期钩子
Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...
- DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明
From http://blog.csdn.net/sunstone/article/details/5282666 DataSnap高级技术(7)—TDSServerClass中Lifecycle生 ...
- 详解Vue 实例中的生命周期钩子
Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...
- vue中的生命周期
vue中的生命周期 1,vue生命周期简介: 1.beforeCreate 在实例初始化之后,数据观测和event/watcher时间配置之前被调用. 2.created 实例已经创建完成之后被调 ...
随机推荐
- composer 2 升级操作
update composer composer self-update // or sudo composer self-update 回滚到版本1 composer self-update --r ...
- AXUI前端框架v3版本已经发布,底层完全改写,基于原生技术标准,想走得更远!
AXUI的v3版本已经发布! AXUI框架已经经历了第一代和第二代的迭代,充分认识到纯CSS和HTML的局限性,也意识到过多手动编写代码会影响用户体验.因此,AXUI的目标是:既满足原生前端的标准,又 ...
- Spring定时任务的秘密
Spring定时任务的秘密 在 Spring 框架中,定时任务主要通过 @Scheduled 注解或 TaskScheduler 接口实现. 1.基本使用 在 Spring Boot 项目中,通过 @ ...
- SRE网站可靠性工程师
SRE网站可靠性工程师 SRE需要做什么? 一般: 故障模式,尤其是SPOF(单点故障).消除SPOFs是你作为SRE最大的挑战和乐趣. 基础设施组件,从应用程序到硬件(服务器.交换机.路由器.互联网 ...
- zk基础—5.Curator的使用与剖析
大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curat ...
- 全网最详细的CM311-1A魔百和刷Armbian教程
CM311-1A魔百和搭载了晶晨S905L3A芯片(实质上是S905X2的定制版本,两者在性能上并无显著差异).然而,遗憾的是,关于这款设备的网络教程相对较少,导致我在自学过程中遇到了不少挑战和障碍. ...
- Codeforces Round 1016 (Div. 3)题解
题目地址 https://codeforces.com/contest/2093 锐评 在所有题意都理解正确的情况下,整体难度不算太难.但是偏偏存在F这么恶心的题意,样例都不带解释一下的,根本看不懂题 ...
- C#(如何解决使用enum和struct作为Dictionary的TKey带来的GC
- 在 Idea 中使用 Git
以 git-2.21.0 为例说明安装步骤: 双击 Git-2.21.0-64-bit.exe 点击 Next 设置安装路径 点击 Next 点击 Next 点击 Next,选择默认的编辑器 点击 N ...
- Vue ElementUI 树表格
树表格做懒加载-点击小箭头走接口 children为[]则使用hasChildren的true/false来判断是否有子节点,另,如果要做点击小箭头走接口必须加lazy及load <el-tab ...