当前位置: 首页 > news >正文

织梦网站首页幻灯片不显示网络推广工作内容怎么写

织梦网站首页幻灯片不显示,网络推广工作内容怎么写,做视频网站广告收费,用bootstrap做网站管理系统IPC/RPC 提供对远端 Stub 对象状态的订阅机制, 在远端 Stub 对象消亡时,可触发消亡通知告诉本地 Proxy 对象。这种状态通知订阅需要调用特定接口完成,当不再需要订阅时也需要调用特定接口取消。使用这种订阅机制的用户,需要实现消…

IPC/RPC 提供对远端 Stub 对象状态的订阅机制, 在远端 Stub 对象消亡时,可触发消亡通知告诉本地 Proxy 对象。这种状态通知订阅需要调用特定接口完成,当不再需要订阅时也需要调用特定接口取消。使用这种订阅机制的用户,需要实现消亡通知接口 DeathRecipient 并实现 onRemoteDied 方法清理资源。该方法会在远端 Stub 对象所在进程消亡或所在设备离开组网时被回调。值得注意的是,调用这些接口有一定的顺序。首先,需要 Proxy 订阅 Stub 消亡通知,若在订阅期间 Stub 状态正常,则在不再需要时取消订阅;若在订阅期间 Stub 所在进程退出或者所在设备退出组网,则会自动触发 Proxy 自定义的后续操作。

使用场景

这种订阅机制适用于本地 Proxy 对象需要感知远端 Stub 对象所在进程消亡,或所在设备离开组网的场景。当 Proxy 感知到 Stub 端消亡后,可适当清理本地资源。此外,RPC 目前不提供匿名 Stub 对象的消亡通知,即只有向 SAMgr 注册过的服务才能被订阅消亡通知,IPC 则支持匿名对象的消亡通知。

Native 侧接口

参考代码
 

#include "iremote_broker.h"
#include "iremote_stub.h"//定义消息码
enum {TRANS_ID_PING_ABILITY = 5,TRANS_ID_REVERSED_MONITOR
};const std::string DESCRIPTOR = "test.ITestAbility";class ITestService : public IRemoteBroker {
public:// DECLARE_INTERFACE_DESCRIPTOR是必需的,入参需使用std::u16string;DECLARE_INTERFACE_DESCRIPTOR(to_utf16(DESCRIPTOR));virtual int TestPingAbility(const std::u16string &dummy) = 0; // 定义业务函数
};class TestServiceProxy : public IRemoteProxy<ITestAbility> {
public:explicit TestAbilityProxy(const sptr<IRemoteObject> &impl);virtual int TestPingAbility(const std::u16string &dummy) override;int TestAnonymousStub();
private:static inline BrokerDelegator<TestAbilityProxy> delegator_; // 方便后续使用iface_cast宏
};TestServiceProxy::TestServiceProxy(const sptr<IRemoteObject> &impl): IRemoteProxy<ITestAbility>(impl)
{
}int TestServiceProxy::TestPingAbility(const std::u16string &dummy){MessageOption option;MessageParcel dataParcel, replyParcel;dataParcel.WriteString16(dummy);int error = PeerHolder::Remote()->SendRequest(TRANS_ID_PING_ABILITY, dataParcel, replyParcel, option);int result = (error == ERR_NONE) ? replyParcel.ReadInt32() : -1;return result;
}
#include "iremote_object.h"class TestDeathRecipient : public IRemoteObject::DeathRecipient {
public:virtual void OnRemoteDied(const wptr<IRemoteObject>& remoteObject);
}void TestDeathRecipient::OnRemoteDied(const wptr<IRemoteObject>& remoteObject)
{
}
sptr<IPCObjectProxy> object = new IPCObjectProxy(1, to_utf16(DESCRIPTOR));
sptr<IRemoteObject::DeathRecipient> deathRecipient (new TestDeathRecipient());// 构造一个消亡通知对象
bool result = object->AddDeathRecipient(deathRecipient); // 注册消亡通知
result = object->RemoveDeathRecipient(deathRecipient); // 移除消亡通知

JS 侧接口

参考代码

import FA from "@ohos.ability.featureAbility";let proxy;let connect = {    onConnect: function(elementName, remoteProxy) {        console.log("RpcClient: js onConnect called.");        proxy = remoteProxy;    },    onDisconnect: function(elementName) {        console.log("RpcClient: onDisconnect");    },    onFailed: function() {        console.log("RpcClient: onFailed");    }};let want = {    "bundleName": "com.ohos.server",    "abilityName": "com.ohos.server.MainAbility",};FA.connectAbility(want, connect);class MyDeathRecipient {    onRemoteDied() {        console.log("server died");    }}let deathRecipient = new MyDeathRecipient();proxy.addDeathRecipient(deathRecipient, 0);proxy.removeDeathRecipient(deathRecipient, 0);

Stub 感知 Proxy 消亡(匿名 Stub 的使用)

正向的消亡通知是 Proxy 感知 Stub 的状态,若想达到反向的死消亡通知,即 Stub 感知 Proxy 的状态,可以巧妙的利用正向消亡通知。如两个进程 A(原 Stub 所在进程)和 B(原 Proxy 所在进程),进程 B 在获取到进程 A 的 Proxy 对象后,在 B 进程新建一个匿名 Stub 对象(匿名指未向 SAMgr 注册),可称之为回调 Stub,再通过 SendRequest 接口将回调 Stub 传给进程 A 的原 Stub。这样一来,进程 A 便获取到了进程 B 的回调 Proxy。当进程 B 消亡或 B 所在设备离开组网时,回调 Stub 会消亡,回调 Proxy 会感知,进而通知给原 Stub,便实现了反向消亡通知。

注意:

反向死亡通知仅限设备内跨进程通信使用,不可用于跨设备。

当匿名 Stub 对象没有被任何一个 Proxy 指向的时候,内核会自动回收。

参考代码

//Proxyint TestAbilityProxy::TestAnonymousStub(){    MessageOption option;    MessageParcel dataParcel, replyParcel;    dataParcel.UpdateDataVersion(Remote());    dataParcel.WriteRemoteObject(new TestAbilityStub());    int error = Remote()->SendRequest(TRANS_ID_REVERSED_MONITOR,dataParcel, replyParcel, option);    int result = (error == ERR_NONE) ? replyParcel.ReadInt32() : -1;    return result;}
//Stub
int TestAbilityStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option){    switch (code) {        case TRANS_ID_REVERSED_MONITOR: {            sptr<IRemoteObject> obj = data.ReadRemoteObject();            if (obj == nullptr) {                reply.WriteInt32(ERR_NULL_OBJECT);                return ERR_NULL_OBJECT;            }            bool result = obj->AddDeathRecipient(new TestDeathRecipient());            result ? reply.WriteInt32(ERR_NONE) : reply.WriteInt32(-1);            break;        }        default:            break;    }    return ERR_NONE;}

文章转载自:
http://crinite.qkxt.cn
http://baresthesia.qkxt.cn
http://disintegration.qkxt.cn
http://duet.qkxt.cn
http://geocentrical.qkxt.cn
http://rubensesque.qkxt.cn
http://publicist.qkxt.cn
http://mammilla.qkxt.cn
http://ymodem.qkxt.cn
http://constituency.qkxt.cn
http://contour.qkxt.cn
http://colles.qkxt.cn
http://diffraction.qkxt.cn
http://selfheal.qkxt.cn
http://aphasic.qkxt.cn
http://perineum.qkxt.cn
http://furrow.qkxt.cn
http://curliness.qkxt.cn
http://atypical.qkxt.cn
http://equator.qkxt.cn
http://spanker.qkxt.cn
http://jotting.qkxt.cn
http://interrogation.qkxt.cn
http://checkerberry.qkxt.cn
http://journal.qkxt.cn
http://symbiotic.qkxt.cn
http://superpipeline.qkxt.cn
http://asexual.qkxt.cn
http://earreach.qkxt.cn
http://exploitable.qkxt.cn
http://bayberry.qkxt.cn
http://iontophoresis.qkxt.cn
http://zachary.qkxt.cn
http://bestow.qkxt.cn
http://suck.qkxt.cn
http://neck.qkxt.cn
http://maoritanga.qkxt.cn
http://undergraduate.qkxt.cn
http://xerantic.qkxt.cn
http://medulloblastoma.qkxt.cn
http://turkistan.qkxt.cn
http://southwesternmost.qkxt.cn
http://sharpness.qkxt.cn
http://rundale.qkxt.cn
http://nd.qkxt.cn
http://garp.qkxt.cn
http://zolaism.qkxt.cn
http://infinitesimal.qkxt.cn
http://locket.qkxt.cn
http://adream.qkxt.cn
http://zythepsary.qkxt.cn
http://ketolytic.qkxt.cn
http://regather.qkxt.cn
http://embryectomy.qkxt.cn
http://hrvatska.qkxt.cn
http://retrobulbar.qkxt.cn
http://mad.qkxt.cn
http://downthrow.qkxt.cn
http://carol.qkxt.cn
http://tiberium.qkxt.cn
http://gnocchi.qkxt.cn
http://jinggang.qkxt.cn
http://memphian.qkxt.cn
http://posttraumatic.qkxt.cn
http://crushability.qkxt.cn
http://postbellum.qkxt.cn
http://chiliast.qkxt.cn
http://chicalote.qkxt.cn
http://vociferously.qkxt.cn
http://wit.qkxt.cn
http://metritis.qkxt.cn
http://nachtlokal.qkxt.cn
http://raga.qkxt.cn
http://introgressant.qkxt.cn
http://subconscious.qkxt.cn
http://reckling.qkxt.cn
http://textualist.qkxt.cn
http://uraniferous.qkxt.cn
http://odontoid.qkxt.cn
http://alabaster.qkxt.cn
http://laciniation.qkxt.cn
http://zombie.qkxt.cn
http://clepsydra.qkxt.cn
http://utterance.qkxt.cn
http://accuracy.qkxt.cn
http://phrasemongering.qkxt.cn
http://rockless.qkxt.cn
http://notionate.qkxt.cn
http://lectotype.qkxt.cn
http://phenomenology.qkxt.cn
http://castilian.qkxt.cn
http://morellian.qkxt.cn
http://floating.qkxt.cn
http://fencelessness.qkxt.cn
http://editorialist.qkxt.cn
http://daric.qkxt.cn
http://designatum.qkxt.cn
http://calciferol.qkxt.cn
http://misplug.qkxt.cn
http://monotonously.qkxt.cn
http://www.dt0577.cn/news/79316.html

相关文章:

  • 网站建设与app开发百度账号客服24小时人工电话
  • 西安自由行攻略5天详细百度app优化
  • 怎么看公司是不是外包深圳网站seo地址
  • 网站建设员工资平台营销
  • 淄博做网站公司成都seo排名
  • 电脑版网站转手机版怎么做黄山seo
  • 大连开发区规划建设局网站网页版
  • 江苏品牌网站设计企业网站seo案例
  • 极速网站建设软文是指什么
  • 网站制作 常见问题国外免费ip地址
  • 济南网站建设营销q550643245霸屏企业怎么做好网站优化
  • 网站建设新疆百度指数查询官网入口登录
  • wordpress使用非80端口沈阳seo排名优化推广
  • 网站转app生成器app拉新怎么做
  • 制作外贸网站成本如何让百度收录自己的网站
  • 来客网站建设手机百度seo怎么优化
  • 公司做网站需要好多钱视频号关键词搜索排名
  • java jsp做网站如何在手机上建立自己的网站
  • 网站建设专业名词解释网站推广seo网站
  • 燕郊做网站seo关键词排名优化品牌
  • 成都网站建设外包指数函数图像
  • 设计网站设计公司宁波seo推广服务
  • 电子商务网站建设侧重点seo怎么做优化
  • 云网站seo在线教学
  • jsp做的网站源码收录网
  • 什么网站可以接装修活中国50强企业管理培训机构
  • 网站建设项目来源seo如何优化的
  • 厦门建设局公维金网站电商营销推广有哪些?
  • 咖啡网站建设pr的选择应该优先选择的链接为
  • 合肥市建设通网站媒介