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;我们就将范围再缩小一下。最有…

uva-10305-水题-拓扑排序

uva-10305-水题-拓扑排序 输入n,m,n代表点数,m代表边数(i,j),排序时i在j前面,没出现的点随意排 #include <iostream> #include<stdio.h> #include<math.h> #include<memory.h> using namespace std;const int maxNum 120; int a, b; int map[maxNum][…

layer和3D仿射变换

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

服务器维修质保合同,服务器维护保修合同(标准版本).pdf

服务器维护保修合同甲 方 &#xff1a;乙 方 &#xff1a;。服务器维护保修合同甲 方&#xff1a;住 所&#xff1a;法定代表人&#xff1a;联 系 电 话 &#xff1a; 传 真&#xff1a;联 系 地 址 &#xff1a;邮 政 编 码 &#xff1a;乙 方&#xff1a;住 所&#xff1a;法…

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

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

knex 单表查询_knex.js

软件简介knex.js 是一个查询构建器&#xff0c;用于 PostgreSQL, MySQL 和 SQLite3。它设计灵活&#xff0c;轻便和有趣。特性&#xff1a;例子&#xff1a;var knex require(knex)({dialect: sqlite3,connection: {filename: ./data.db}});// Create a tableknex.schema.crea…

IOS-网络(大文件下载)

一、不合理方式 1 //2 // ViewController.m3 // IOS_0131_大文件下载4 //5 // Created by ma c on 16/1/31.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h" 10 11 interface ViewController ()<NSURLConne…

地理素养的核心构成和主要特点

素养教育已成为21世纪国际教育发展的重大课题和紧迫任务。新一轮地理课程改革把地理素养置于地理课程目标的核心地位。因此,统一认识和准确把握地理素养的内涵与特质,对于促进学生的全面发展具有十分重要的意义。 一、地理素养的内涵与组成 地理素养是指学习者经过地理学习后…

【开题报告】基于SpringBoot的电子二手产品交易平台的设计与实现

1.研究背景 随着互联网的快速发展和普及&#xff0c;电子商务行业蓬勃发展&#xff0c;二手产品交易作为电子商务领域的一个重要分支也得到了广泛关注。传统的线下二手交易存在一些问题&#xff0c;例如信息不对称、交易风险高、交易流程繁琐等&#xff0c;这些问题限制了用户…

Blazor University (9)组件 — 代码生成 HTML 属性

原文链接&#xff1a;https://blazor-university.com/components/code-generated-html-attributes/代码生成 HTML 属性Razor 在条件 HTML 输出或在 for 循环中输出 HTML 时非常棒&#xff0c;但在元素本身内的条件代码方面&#xff0c;事情就有点棘手了。例如&#xff0c;以下代…

python重定向_在Python中使用urlopen()防止“隐藏”重定向

我正在使用BeautifulSoup进行网页抓取,并且在使用urlopen时遇到特定类型网站的问题.网站上的每个商品都有其独特的页面,并且商品具有不同的格式(例如&#xff1a;500 mL,1L,2L等). 当我使用Internet浏览器打开产品的URL(www.example.com/product1)时,会看到500 mL格式的图片,有…

CentOS安装JAVA JDK

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

Android之解决Android8.0手机(Notification)收不到自定义消息通知以及其它手机得到数据不同步

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

世界史

评价华盛顿&#xff1a;打破一个旧世界需要勇气与胆魄&#xff0c;建设一个新世界却需要耐心与智慧。

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

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

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

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

VS2008系统开发背景图片的添加及注意事项

最初的做法是&#xff0c;直接将父窗体的Image属性改成背景图片&#xff0c;并将其BackgroundImageLayout属性设置为stretch&#xff0c;结果发现这样做的结果是系统运行超级慢&#xff0c;便考虑用代码实现&#xff0c;如下&#xff1a; //this.BackgroundImage System.Draw…

JavaScript中的的面向对象中的一些知识

JavaScript中的的面向对象中的一些知识 function Cat(name,age){return {name:name,age:age }}//构造函数function Dog(name,age){this.namename;this.ageage; }function show(){var c1new Cat("cat1",18);var c2new Cat("cat2",19);//Javascript还提…