React Native之js同步调用安卓原生方法@ReactMethod(isBlockingSynchronousMethod = true)

1 问题

之前的代码js调用安卓原生都是用的异步方法,比如callback, promiss,异步的话,我们一般是在安卓原生有耗时操作,才用异步,如果我要离开返回,就需要js调用安卓同步方法

利用callback实现js调用原生可以参考我的这篇博客

React Native实现js调用安卓原生代码

React Native之js调用Android原生使用Callback传递结果给js

 

 

 

2  代码实现

依然在MyToastModule.java文件下面增加下面的同步函数

    @ReactMethod(isBlockingSynchronousMethod = true)public String showMyName() {return "chenyu1";}

这里用了注解,请注意,也就是说意味着这个方法是同步方法

然后App.js的部分实现如下

/*** Sample React Native App* https://github.com/facebook/react-native** @format* @flow*/import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, NativeModules} from 'react-native';const instructions = Platform.select({ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',android:'Double tap R on your keyboard to reload,\n' +'Shake or press menu button for dev menu',
});
var myAndroidToast = NativeModules.MyToast;
type Props = {};
export default class App extends Component<Props> {constructor(props){super(props);this.state={myName:'chenzixuan',}}render() {return (<View style={styles.container}><Text onPress={()=> this._androidShowMsg()} style={styles.welcome}>Welcome to React Native!</Text><Text style={styles.instructions}>To get started, edit App.js</Text><Text style={styles.instructions}>{instructions}</Text><Text style={styles.instructions}>{this.state.myName}</Text></View>);}_androidShowMsg = () => {var value = myAndroidToast.showMyName();this.setState({myName:value});};
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#F5FCFF',},welcome: {fontSize: 20,textAlign: 'center',margin: 10,},instructions: {textAlign: 'center',color: '#333333',marginBottom: 5,},
});

 

 

 

 

 

 

3 运行结果

点击Welcome to React Native 效果如下

 

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

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

相关文章

用POP动画引擎实现弹簧动画(POPSpringAnimation)

效果图: #import "ViewController.h" #import <POP.h>interface ViewController ()property (nonatomic, weak) UIView *testView;endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor [UIColor blackColor…

地理知识归纳:影响降水的九大因素

降水指大气中水汽凝结降落的过程,包括降雨、下雪、冰雹等形式,降水的多少要受很多因素的影响,但主要条件是三个:充足的水汽供应,气流上升达到过饱和状态,足够的凝结核。通常情况下,我们不需要考虑凝结核的问题,只是考虑有没有充足的水汽和促使气流上升的机制就可以,归…

linux 查看cpu_作为高级Java,你应该了解的Linux知识

作为一个javaer&#xff0c;我以前写过很多关于Linux的文章。但经过多年的观察&#xff0c;发现其实对于大部分人&#xff0c;有些东西压根就用不着。用的最多的&#xff0c;就是到线上排查个问题而已&#xff0c;这让人很是苦恼。那么&#xff0c;我们就将范围再缩小一下。最有…

layer和3D仿射变换

1、视图的显示基于图层&#xff0c;通过控制图层同样能控制显示效果&#xff0c;获取当前的视图的layer,并为其增加圆角边框。 //设置layer边框的宽度为2view.layer.borderWidth2;//如果需要为layer添加颜色需要转换为CGColor对象view.layer.borderColor[UIColor greenColor].C…

React Native之Android原生通过DeviceEventEmitter发送消息给js

1 问题 Android原生向js发消息,并且可以携带数据 2 实现原理 Android原生可以使用RCTEventEmitter来注册事件,然后这里需要指定事件的名字,然后在js那端进行监听同样事件的名字监听,就可以收到消息得到数据 Android注册关键代码 reactContext.getJSModule(DeviceEventManag…

CentOS安装JAVA JDK

普通情况下&#xff0c;我们都要将linux自带的OPENJDK卸载掉。然后安装SUN的JDK。首先查看Linux自带的JDK是否已安装。 输入例如以下命令&#xff0c;查看已经安装的JAVA版本号信息。 Linux代码 java -version 输入例如以下命令。查看JDK的信息。Linux代码 rpm -qa|grep j…

安装bigdesk后es无法启动_安装天正后,探索者无法双击启动?

用户经常会出现&#xff0c;安装天正后&#xff0c;探索者无法双击启动&#xff0c;或者是图纸无法拖拽入CAD中&#xff0c;如何解决&#xff1f;答&#xff1a;天正安装完成后&#xff0c;默认将CAD的acad.exe程序&#xff0c;添加了“以管理员身份运行此程序”而导致的&#…

服务器安全维护包含,服务器安全维护包含

服务器安全维护包含 内容精选换一换本章节介绍如何使用管理控制台向导创建裸金属服务器。创建裸金属服务器时&#xff0c;您需要配置规格、镜像、存储、网络、安全组等必备信息。同时&#xff0c;向导也提供了丰富的扩展配置功能&#xff0c;方便您进行个性化部署和管理。在创建…

C# 发出异步的Get请求

下列的下载代码示例是 HttpClientSample。它以不同的方式异步调用Web 服务。为了演示本例使用的不同方法&#xff0c;使用了命令行参数。示例代码使用了以下名称空间&#xff1a;System System.Linq System.Net System.Net.Http System.Net.Http.Headers System.Threading Sy…

React Native之Props(属性)和State(状态)和简单样式简单使用

1 Props(属性)和State(状态)和简单样式简单使用App.js代码如下 /*** Sample React Native App* https://github.com/facebook/react-native** format* flow*/import React, {Component} from react; import {Platform, StyleSheet, Text, View, NativeModules, DeviceEvent…

config kubectl_Kubernetes(k8s)中文文档 kubectl config set-context_Kubernetes中文社区

译者&#xff1a;hurf在kubeconfig配置文件中设置一个环境项。摘要在kubeconfig配置文件中设置一个环境项。 如果指定了一个已存在的名字&#xff0c;将合并新字段并覆盖旧字段。kubectl config set-context NAME [--clustercluster_nickname] [--useruser_nickname] [--namesp…

使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题

理想的代码优化方式团队日常协作中&#xff0c;自然而然的会出现很多重复代码&#xff0c;根据这些代码的种类&#xff0c;之前可能会以以下方式处理方式描述应用时可能产生的问题硬编码多数新手&#xff0c;或逐渐腐坏的项目会这么干&#xff0c;会直接复制之前实现的代码带来…

React Native之Flexbox布局和监测文本输入onChangeText

1 Flexbox布局 1) flexDirection 可以决定布局的主轴,子元素是应该沿着水平轴(row)方向排列&#xff0c;还是沿着竖直轴(column)方向排列 2) justifyContent 决定其子元素沿着次轴&#xff08;与主轴垂直的轴&#xff0c;比如若主轴方向为row&#xff0c;则次轴方向为…

半年总结——欲戴王冠,必承其重

【Introduction】 每一个女生都梦想着作为一个女王。但是你仅仅看到了女王头上金闪闪的王冠&#xff0c;却不知道在这个王冠下。她是怎样成长的&#xff01;假设你想要做到有女王一样的权利&#xff0c;就必需要承担一个女王应该做到的事情&#xff01;——欲带王冠&#xff0c…

一维数组和二维数组的区别_数组指针和指针数组的区别

数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com数组指针&#xff08;也称行指针&#xff09;定义 int (*p)[n];()优先级高&#xff0c;首先说明p是一个指针&#xff0c;指向一个整型的一维数组&#xff0c;这个一维数组的长度是n&#xff0c;也可以说是p的…

mysql 配置多个数据库连接_总结MySQL修改最大连接数的两个方式

问题在使用MySQL数据库的时候&#xff0c;经常会遇到这么一个问题&#xff0c;就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误&#xff0c;这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常&#xff0c;mysql的最大连接数默认…

饿了么超级会员,年卡低至108元!饿了么会员,点外卖超省钱!

饿了么是大家常用的外卖平台&#xff0c;经常点外卖的朋友&#xff0c;充个饿了么超级吃货卡&#xff0c;还是能省不少钱的&#xff0c;今天给大家带来饿了么会员特价充值&#xff0c;会员秒到&#xff01;饿了么超级会员特价充值月卡&#xff1a;原价15元&#xff0c;特价仅需…

React Native之内部方法常用几种写法和调用规则

1 简单部分代码 export default class App extends Component<Props> {render() {return (<View style{styles.container}><View style{styles.welcome}><Button onPress{this.showMsg}titleprees me showMsg/> <Button onPress{() > {this.sho…

介绍一款受欢迎的.NET 开源UI库

概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包&#xff0c;它许多开箱即用的好东西。目前支持的NET Framework 4.6.2及更高版本、.NET Core 3.1, .NET 5 and .NET 6 (on Windows)。官网学习文档地址&#xff1a;…

图像分类中混淆矩阵精度验证法中的几个指标说明

ToolBox->Classification->PostClassification->Confusion Matrix->Using Ground Truth ROIs,可以得到如下的分类精度验证的混淆矩阵。 要看懂这个精度验证结果,需要了解几个混淆矩阵中的几项评价指标: