设计图片网站哪个好五金东莞网站建设技术支持

pingmian/2025/10/7 22:04:36/文章来源:
设计图片网站哪个好,五金东莞网站建设技术支持,安卓 网站整站下载,分类信息免费发布网文章目录 一 、前言二、RN与安卓通信2.1 RN 调用安卓原生组件2.2 RN 应用消息机制方式与安卓原生代码切换2.3 RN 应用 Promise 机制与安卓原生代码通信2.4 RN 应用 callback 回调方式与安卓原生代码通信 三、RN与IOS通信3.1 定义导出的方法名3.2 promise 实现回调函数3.3 继承 … 文章目录 一 、前言二、RN与安卓通信2.1 RN 调用安卓原生组件2.2 RN 应用消息机制方式与安卓原生代码切换2.3 RN 应用 Promise 机制与安卓原生代码通信2.4 RN 应用 callback 回调方式与安卓原生代码通信 三、RN与IOS通信3.1 定义导出的方法名3.2 promise 实现回调函数3.3 继承 RCTEventEmitter 类 四、拓展阅读 一 、前言 RN项目开发阶段需要实现RN与原生应用间进行数据通讯。 二、RN与安卓通信 2.1 RN 调用安卓原生组件 用Android Studio打开一个已经创建好的RN项目选择android/build.gradle文件。创建一个类MyNativeModule继承ReactContextBaseJavaModule暴露出一些让RN调用的方法封装成一个原生模块。 public class MyNativeModule extends ReactContextBaseJavaModule{ }实现getName方法用于返回RN代码需要寻找的类的名称。 //RN代码要通过名字来调用该类的方法 Override public String getName() {return ToastModule; }实现类的构造方法将传入的上下文赋值给类内部私有的上下文。 // 创建一个上下文放到构造函数中得到reactContext private ReactApplicationContext mContext; public MyNativeModule(ReactApplicationContext reactContext){super(reactContext);mContext reactContext; }创建暴露给RN调用的方法需要用注释符号ReactMethod修饰。 //方法不能返回值。因为被调用的原生代码是异步的。原生代码执行结束之后只能通过回调函数或者发送消息给RN。 ReactMethod public void rnCallNative(String msg){//这个方法是说弹出一个弹窗到界面Toast.makeText(mContext,msg,Toast.LENGTH_LONG).show(); }在原生代码中创建一个类实现接口ReactPackage包管理器并且把第二步已经创建好的类加入到原生模块列表里。 public class MyReactPackage implements ReactPackage {Overridepublic ListNativeModule createNativeModules(ReactApplicationContext reactContext) {ListNativeModule modules new ArrayList();modules.add(new MyNativeModule(reactContext));return modules;}Overridepublic ListViewManager createViewManagers(ReactApplicationContext reactContext) {return Collections.emptyList();} }将创建好的包管理器添加到ReactPackage列表里,也就是MainApplication代码中在类里找到方法getPackages方法将包管理器添加进去。 Override protected ListReactPackage getPackages() {return Arrays.ReactPackageasList(new MainReactPackage(),new MyReactPackage()); }在RN代码中用NativeModules组件去调用原生模块。 导入组件 import {AppRegistry,StyleSheet,Text,View,NativeModules, } from react-native;设置方法调用原生代码 call_button(){NativeModules.ToastModule.rnCallNative(RN与安卓开发); }布置UI 在render方法里面设置当用户点击文字时调用自定义的方法call_button。并且以这种形式创建的方法需要进行绑定。 render() {return(View style{styles.container}Text onPress{this.call_button.bind(this)}测试原生通讯/Text/View); } .... const styles StyleSheet.create({container: {flex:1,backgroundColor:deeppink,flexDirection:row,justifyContent:center,alignItems:center }, });RN调用原生的方法此时安卓的application就会启动完成之后它会去找Package列表进而找到自己创建的列表。而在组件的列表里面有一个原生模块列表到自己的模块列表里面调用模块里的方法就完成了调用。 2.2 RN 应用消息机制方式与安卓原生代码切换 在原生代码中添加一个按钮当用户从RN界面调用原生代码就会进入到原生代码开发的界面中而点击原生代码中的按钮就会返回到RN界面。 实施步骤如下 在与MainApplication同级的目录下创建一个MyActivity会自动生成一个自动布局文件activity_my做布局的工作。打开布局文件将左下角的Design切换成Text文件为原生界面创建一个按钮并且布局。 ?xml version1.0 encodingutf-8? RelativeLayoutandroid:layout_width match_parentandroid:layout_heightmatch_parentxmlns:android http://schemas.android.com/apk/res/androidButtonandroid:textgoBackandroid:onClickonBackandroid:layout_centerInParenttrueandroid:layout_widthwrap_contentandroid:layout_heightwrap_content/ /RelativeLayout回到新创建的MyActivity代码实现onBack方法。 //点击按钮直接完成 public void onBack(View v){finish(); }在MyNativeModule原生模块中去实现Activity。 //方法不能返回值 因为被调用的原生代码是异步的 原生代码执行结束之后只能通过回调函数或者发送消息给RN ReactMethod public void rnCallNative(String msg){Toast.makeText(mContext,msg,Toast.LENGTH_LONG).show();Intent intent new Intent(mContext,MyActivity.class); //创建一个意图意图是android进程之间、线程之间、交换数据的载体intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //一定要加上这句mContext.startActivity(intent); }2.3 RN 应用 Promise 机制与安卓原生代码通信 使用Promise机制也是RN与原生通信的一种方式。在原生代码的MyNativeModule文件中创建桥接方法当桥接的原生方法的最后一个参数是一个Promise对象那么该方法会返回一个JS的Promise对象给与之对应的js方法。与上文类似需要暴露给RN的方法不能有返回值并且要以注释ReactMethod标识。 ReactMethod public void rnCallNative_promise(String msg,Promise promise){Toast.makeText(mContext,msg,Toast.LENGTH_SHORT).show();//得到组件名称String componentName getCurrentActivity().getComponentName().toString();promise.resolve(componentName); }在RN中创建一个方法这个方法内部使用NativeModules组件来调用原生模块提供的名称进而找到要调用的原生方法。原生方法最后一个参数是一个promise所以在js中用.then的方法实现即可。 callAndroid_promise(){NativeModules.ToastModule.rnCallNative_promise(promise调用原生).then((msg) {console.log(promise收到消息:msg);}).catch((err){console.log(err);}) }渲染方法中调用方法。 Text style{styles.welcome} onPress{this.callAndroid_promise.bind(this)}Promise通信/Text .... welcome: {fontSize: 16,textAlign: left,margin: 10 }2.4 RN 应用 callback 回调方式与安卓原生代码通信 在原生模块中暴露一个桥接方法给RN调用参数传入一个成功的回调和一个失败的回调。 ReactMethod public void measureLayout(Callback errorCallback,Callback successCallback){try {successCallback.invoke(100,100,200,200); //调用回调函数返回结果}catch (IllegalViewOperationException e){errorCallback.invoke(e.getMessage());} }在js中实现回调方法。同样是通过NativeModules组件寻找到桥接名称ToastModule进而找到想要调用的方法。拿到返回的参数做功能处理。 callAndroid_callback(){NativeModules.ToastModule.measureLayout((msg){console.log(msg);},(x,y,width,height){console.log(x坐标:xy坐标:y高:height宽width);}) }在使用回调函数时会呈现出某些缺点比如说每次调用只应当调用一次多次调用可能会出现意想不到的结果并且用这种方法安卓原生代码是无法主动发送信息给RN侧的。 三、RN与IOS通信 首先 RN 与 IOS 通信,在原生端需创建一个bridge ,并遵守协议。 #import React/RCTBridgeModule.h interface PushModule : NSObjectRCTBridgeModule其次在implementation中导出 Module。 implementation PushModule RCT_EXPORT_MODULE()有以下3种通信方式。 3.1 定义导出的方法名 RCT_EXPORT_METHOD(pushEvent:(NSString *)event callback:(RCTResponseSenderBlock)callback){NSLog(----对React Native提供调用方法,Callback---%,event);NSString *callbackData 原生数据被RN调用; //准备回调回去的数据callback([[NSNull null],callbackData]); }定义一个方法后RN 就可通过NativeModules获取到对于 Module后调用相应方法event是 RN 传给 IOS 的值IOS 这边可通过 callback 这个 block 回调给 RN 数据。 callBackEvent (){NativeModules.PushModule.pushEvent((RN-原生的数据),(error, events) {if (error) {console.log(error);}else {alert(events)}}) }3.2 promise 实现回调函数 static RCTPromiseResolveBlock _resolve;//成功回调 static RCTPromiseRejectBlock _reject;//失败回调RCT_REMAP_METHOD(pushPromisesEvent,resolver:(RCTPromiseResolveBlock)resolverejecter:(RCTPromiseRejectBlock)reject){_resolve resolve;_reject reject;}//异步回调函数 (void) handleResult:(id)result{//原生Promises数据被RN调用if ([result isEqualToString:获取数据成功]) {_resolve([result]);}else{//返回错误信息NSError *error[NSError errorWithDomain:result code:101 userInfo:nil];_reject(no_events, There were no events, error);} }RN 侧方法调用。 NativeModules.PushModule.pushPromisesEvent().then((events){ alert(events1111) }).catch((e){ // alert(e)console.log(错误信息------e);}) }3.3 继承 RCTEventEmitter 类 #import React/RCTEventEmitter.h #import React/RCTBridgeModule.h interface PushModule : RCTEventEmitterRCTBridgeModule在 .m 的实现中有几个继承方法需要实现。 //IOS 回传给 RN 的通知方法 - (NSArray*)supportedEvents{return [Notice_name] }- (void)startObserving {[PushTool sharedPushTool].isReady YES;[[NSNotificationCenter defaultCenter] addObserver:selfselector:selector(notice:)name:event-noticeobject:nil]; }-(void)notice:(NSNotification*)notification {NSDictionary*obj notification.object;[self sendEventWithName:Notice_name body:obj]; }在 RN 侧实施监听。 var module new NativeEventEmitter(NativeModules.PushModule); module.addListener(Notice_name,(data)this.message(data));四、拓展阅读 《iOS开发进阶八ipa应用唤起并跳转至指定页面》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德国建设部网站台州网站设计飞速

在建立数据设计模型时,我们需要注意表设计与类设计之间的差别,这事实上是数据模型与对象模型之间的差别。 数据模型与对象模型 我们首先来分析在设计时对冗余的考虑。前面在讲解数据分析模型时就提及,在确定数据项模型时,需要遵…

本地网站建设软件网站内容优化细节

游戏存档 0.建立游戏存档类 1.建立存档 命名要用规律,读档时根据命名调用 2.读取存档 这里是用存档时间(秒)验证是否有存档成功。 两种鼠标位置射线检测方法 两种适用性未使用大量项目验证,为个人观点 1.适用于游戏中 2.适用于…

广州市南沙建设局网站什么是网站建设有哪些具体内容

文章目录 栈,堆stack object的生命周期static local object的生命周期global object的生命周期heap objects 的生命期new:先分配memory,再调用构造函数delete: 先调用析构函数,再释放 memory动态分配所得的内存块,in V…

dw做网站首页代码有没有catia做幕墙的网站

一、章节内容概述 把管理科学的潜力转变为绩效,主要取决于管理者。要做到这一点,管理者必须理解管理科学是什么以及能够做什么。管理者必须明白,管理科学固有的特殊局限性在很大程度上源于自身的起源和历史。但最重要的是,管理者…

织梦可以做移动网站吗自己做网站引用别人的电影

我们在使用python过程中,为了避免错误删除,会选择做好一个序列后可以插入另外的序列中做为新序列的一部分内容。方便完成一些复杂的工程或多个片段分别编辑后再串成一个完整工程的操作。之前小编向大家介绍了在序列中起到累计作用的reduce函数(https://w…

制作微网站的平台有哪些建各企业网站多少钱

标哥是我的大学老师。标哥也是我们很多学生公认上课非常好的老师,最近标哥突然想见见我这个年轻仔,让我去广州见见他,当然,并不是说他不能来深圳,见面的时候标哥特意给我们解释了一遍,我肯定是能理解他的良…

thinkphp 网站模版合肥html5网站建设

AI智能开发!网站一键复刻!设计稿秒变成品! 相信对很多关注低代码和AI技术的小伙伴来说, 都觉得像这些还只是停留在概念上的技术,很难落地实践。 但是在「织信」已经全部都做到了! 无图无真相&#xff0…

嘉定品牌网站建设做学校网站的济南公司

程序员要保持身心健康,可以注意以下几个方面: 饮食健康:保持均衡的饮食,多吃蔬菜水果,减少油腻和高热量食物的摄入。同时,适当饮水,避免因长时间坐着工作而导致的脱水。尽量不要吃街边摊、大排…

网页源代码提取文件网站优化成功案例

【判断题】重合断面的轮廓线用细实线绘制。【单选题】阿萨德法师法啥【单选题】三相桥式交叉连接电路为限制脉动环流需要( )平衡电抗器【单选题】地方搞活动风格化大发光火【填空题】若s是int型变量,且s6,则表达式s%2(s1)%2的值为________。【填空题】负反馈的作用是( )。【单选…

html网站开发语言建网站 必须学html吗

Functions and Getting Help 在本课中,我们将讨论函数:调用它们,定义它们,并使用Python的内置文档查找它们。 在某些语言中,定义函数必须要有特定的参数,每个参数都具有特定类型。 Python函数允许更灵活。…

邯郸哪个公司做网站好wordpress中文版手册

一、需求分析 旅游网站通常具有多种功能,以下是一些常见的旅游网站功能: 酒店预订:旅游网站可以提供酒店预订服务,让用户搜索并预订符合其需求和预算的酒店房间。 机票预订:用户可以通过旅游网站搜索、比较和预订机票…

大型门户网站建设工作总结网站建设公司做销售好不好

目录SIFT是什么?尺度空间理论SIFT特征点提取SIFT特征点描述SIFT是什么? SIFT ,即尺度不变特征变换( Scale-invariant feature transform,SIFT) ,一种特征描述方法。具有 尺度鲁棒性 旋转鲁棒性 光照鲁棒性 SIFT本身包括了特征点筛选及特征点…

网站建设模板删不掉仙侠手游代理平台

机器学习综述 摘要 本文主要参考中科院自动化研究所复杂系统与智能科学实验室王珏研究员《关于机器学习的讨论》,讨论机器学习的描述,理论基础,发展历史以及研究现状。 关键字:机器学习,科学依据,发展脉络 0引言 20世纪…

长沙房产集团网站建设能翻到国外的浏览器

一、排查过程 问题发现是因为当时接到了内存UMP报警信息,如下: 通过查看PFinder发现内存一直在增长,没有停止迹象,触发fullGC也并没有下降趋势: 当机立断,先立即去NP上摘除了此台机器流量,然后…

网站建设素材库网络营销策划书ppt

注意:转化之前先将移动硬盘中的内容进行备份 1、点击桌面上的【前往】,选择【实用工具】 2、在列表中选择【磁盘工具】 3、在左侧选中你的磁盘,点击右侧上方的【抹掉】,注意:将永久抹掉储存在上面的所有数据,因此需要…

大学的网站设计重庆装修公司哪家口碑最好

ADC工作原理: 1、输入通道: 2、转换序列: A/D转换被组织为两组:规则组(常规转换组)和注入组(注入转换组) 规则组最多可以有16个转换,注入组最多有4个转换 规则组和注入…

福州房地产网站建设wordpress 去掉rss

Go 一、Windows下安装Go1、下载Go2、配置环境变量3、下载Jetbrain下的GoLang4、编写hello world5、编译和执行 二、Go语言介绍1、开发文档2、Go语言核心开发团队3、为什么要创建Go4、Go语言发展史5、Go语言特点6、Golang执行过程6.1 执行过程分析6.2 编译是什么 7、开发注意事项…

成都市网站建设费用及企业Wordpress 分表分库

golang 引入swagger(iris、gin) 在开发过程中,我们不免需要调试我们的接口,但是有些接口测试工具无法根据我们的接口变化而动态变化。文档和代码是分离的。总是出现文档和代码不同步的情况。这个时候就可以在我们项目中引入swagge…

天津网站建设费用电脑可以做网站主机么

C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…

Python用数据库做网站做一个网站能卖多少钱

1. 外部类 (写在pulic修饰的类外面) 2. 静态内部类(写在类的里面) 3. 局部内部类(写在方法里面) 4. 匿名内部类 5. 函数式接口。lambada表达式。public class LambdaDemo01 {/*** 2. 静态内部类*/static class Love02 implements Lover {Overridepublic void love() {System.ou…