关于React Native 安卓首屏白屏优化】的更多相关文章

问题描述 在android中,当点击某个rn模块的入口按钮,弹出rn的activity到rn的页面展现出来的过程中,会有很明显的白屏现象,不同的机型不同(cpu好的白屏时间短),大概1s到2s的时间. 注意,只有在真机上才会有此现象,在模拟器上没有此现象完全是秒开. 优化分析 通过工具分析,问题主要在下面的代码上, ReactRootView mReactRootView = createRootView(); mReactRootView.startReactApplication(mReac…
RN首次加载都会有个白屏过程,一般都会有500ms+的白屏时间,原生页面开发同样的页面会能够快速显示而在RN页面中有个明显的等待过程,这个会影响用户体验. 1.使用过渡页面 简单处理可以在白屏过程中加个过度页面,通过设置RCTRootView的loadingView添加默认的加载过程 /** * A view to display while the JavaScript is loading, so users aren't presented * with a blank screen. B…
先讲下我的RN版本0.58.5 首先安装react-native-splash-screen(目前使用的版本是3.2.0) 项目地址https://github.com/crazycodeboy/react-native-splash-screen 原理参考作者的文章:https://www.jianshu.com/p/78571e5435ec 安装了这个组件后,可以解决掉RN的启动白屏,但是启动时仍然会有一小段的白屏, 这个是ANDROID本身的白屏,要解决掉这个白屏 需要修改android目…
你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单,简历一个简单的例子就可以理解了. 其实,黑屏或者白屏这里并不是不正常,而是还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景.代码如下,可以自己写个小demo就理解了. @Override protected void onCreate(Bundle saved…
你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单,简历一个简单的例子就可以理解了. 其实,黑屏或者白屏这里并不是不正常,而是还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景.代码如下,可以自己写个小demo就理解了. 1 2 3 4 5 6 7 8 9 10 11 12 @Override protected…
近期,再用react的时候,由于不想用丑陋的hash,便将路由模式切换成history了,结果带来了一些问题,比如刷新白屏,还有图片加载不出来,这里我们说一下解决方案. 原因 首先,我们说一下造成这一系列现象的原因. 我们在http://localhost:xxxx/这个路径下去刷新页面是没有问题的,一切都显得那么正常,但是当我们换到一个子模块,刷新就会白屏,为什么呢? 我们看到,它会从当前路径下去找bundle.js,为什么?因为HtmlWebpackPlugin插件在帮我们引入bundle.…
权限                                                                                             <uses-permission android:name="android.permission.DEVICE_POWER"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>…
在开发中,我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,不同设备时间长短不同.很影响用户体验. 首先分析一下,产生这个现象的原因,当我们在启动一个应用时,系统会去检查是否已经存在这样一个进程,如果不存在,就是冷启动.系统和APP本身都有很多工作需要处理.首先系统的服务会先检查startActivity中的intent的信息,然后在去创建进程,最后才是执行启动Acitivy的操作.而我们上面提到的显示白黑屏的问题,就是在这段时间内产生的. 系统在绘制页面加载布局之前,首先会初始化窗口(…
配置主要分为以下几步: 安装node.js 安装AndroidStudio 安装React Native命令行工具 搭建React Native版本的Hello World,修改代码查看效果 第一步 下载node.js,安装并配置环境变量.下载地址:https://nodejs.org/en/download/. 检验是否配置成功,命令行输入:node -v 成功则会显示nodejs版本,否则配置有问题. 第二步 安装AndroidStudio.下载地址:https://developer.an…
这个问题已经得到解决,参照stackoverflow上的问题:https://stackoverflow.com/que...这个问题的原因就处在Android工程中app/build.gradle中,build.gradle中对于 react-native库的版本的配置默认是这么写的: compile 'com.facebook.react:react-native:+' 这个最后面的 “+” 表示的是使用最新的版本号.也就是说,我们Android工程中,依赖的React native 的na…
一上午就整了个React Native的打包,中间还遇到各种问题,这里还是记录下吧: 文档链接: http://reactnative.cn/docs/0.45/signed-apk-android.html#content 打包步骤如下: 1> cd 项目目录; 2>执行以下命令: react-native bundle --entry-file index.android.js --bundle-output ./android/app/src/main/assets/index.andr…
在项目中,有时候可能会想使不同的页面显示的横竖屏也不一样,比如前一段我做的<广播体操>的项目,在首页面,肯定是想使页面为竖屏显示,但是播放页面要为横屏显示,即使用户的手机可以转屏,我们的播放页面也要是横屏显示. 有这样的需求,我们可以借助react-native的第三方组件,react-native-orientation. 官方文档:https://github.com/yamill/react-native-orientation 安装 1.如果项目正在运行,先关闭模拟器和终端: 2.执行…
import { withNavigationFocus } from 'react-navigation'; class Warngreete extends React.Component { constructor(props) { super(props); } componentDidMount() { this.reload();}      componentWillReceiveProps(newProps) { if(newProps.isFocused){ this.relo…
1.产生签名的key 该过程会用到keytool,开发过安卓的都应该接触过该东西.详细请见密钥和证书管理工具.在项目的主目录(不是android文件夹)中执行: --生成签名key,注意记下你的密钥和存储密码,后面配置文件需要使用 keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 --将keystore文件移动至and…
传送门参考: 下面的这个链接很详细了,一步一步就好.... https://github.com/NARUTOyuyang/React-Native 然而在运行react-native run-android的时候报错了,终端显示报错信息如下: 百度一下错误,找到解决办法: 导致构建失败BUILD FAILED. 看到上述的命令行提示,发现他的意思是我们的安卓环境可能配置的不对,还让我们去官网看看,那好吧,咱们到官网一看,有个步骤是这样的, 依照博客介绍一步一步操作即可... 这里其实我的原因还…
android:usesCleartextTraffic="true"…
// my-release-key.keystore和my-key-alias都是可修改的名称 1.生成签名密钥(keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000) 2.在项目中找到android/app/src/main目录下创建一个叫assets的文件夹 在工程目录下(android/app/src/main/as…
Android Studio 模拟器调出Dev Setting 实现热更新 cmd进入项目目录 F:\study\AwesomeProject> 执行 adb shell input keyevent 82 出现如下图菜单…
腾讯优测是专业的移动云测试平台,旗下的优分享不定时提供大量移动研发及测试相关的干货~ 此文主要与以下内容相关,希望对大家有帮助. react native给了我们使用javascript开发原生app的能力,在使用react native完成兴趣部落安卓端发现tab改造后,我们开始对由react native实现的界面进行持续优化.目标只有一个,在享受react native带来的新特性的同时,在体验上无限逼近原生实现. 作为一名前端开发,本文会从前端角度,探索react native首屏渲染最…
文 / 腾讯 龚麒 0.前言 react native给了我们使用javascript开发原生app的能力,在使用react native完成兴趣部落安卓端发现tab改造后,我们开始对由react native实现的界面进行持续优化.目标只有一个,在享受react native带来的新特性的同时,在体验上无限逼近原生实现.作为一名前端开发,本文会从前端角度,探索react native首屏渲染最佳实践. 1.首屏耗时计算方法 1.1我们关注的耗时 优化首屏渲染耗时,需要先定义首屏耗时的衡量方法.…
Android 启动APP时黑屏白屏的三个解决方案 http://www.cnblogs.com/liqw/p/4263418.html android:windowSoftInputMode属性使用 http://www.blogjava.net/zhip/archive/2011/02/14/344258.html…
为何要自己编译React Native安卓私有代码 我们在开发中遇到一个HTTP2的问题,React Native安卓客户端在和HTTP2支持的服务器通讯的过程中会有crash,见 React-Native HTTP2 issue How to build private build 由于时间紧急,发布期限已经拖了好久了,没法等待官方解决方案,只能在本地做修复然后发布. 编译私有React-Native 针对android,React-Native有官方指导说明. 过程中遇到不少坑,记录如下:…
(一).资讯 1.React Native 0.21版本发布,最新版本功能特点,修复的Bug可以看一下已翻译 重要:如果升级 Android 项目到这个版本一定要读! 我们简化了 Android 应用构建方式,Android 库现在通过 npm 和框架一起分发(不是 Maven).这意味着您需要运行 react-native upgrade 来升级您的 Android build(.gradle) 文件.这是一次性的修改. (二).技术文章 1.React Native API模块BackAnd…
1 React Native安卓项目打包APK 1.1 产生签名的key 先通过keytool生成key 1 keytool -genkey -v -keystore demo-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 20000 将生成的key启动到项目android/app目录下面 1 mv demo-release-key.keystore android/app/ 1.2 修改…
React Native(下文简称 RN)开源已经一年多时间,国内各大互联网公司都在使用,携程也在今年 5 月份投入资源开始引入,并推广给多个业务团队使用,本文将会分享我们遇到的一些问题以及我们的优化方案. 一.背景和使用情况介绍 为什么会引入 React Native? 1. AppSize 占用 携程旅行 App 从 11 年开始开发,至今已有 5 年多时间,随着各项业务功能的全面移动化,以及公司"Mobile first"策略的指引下,App 功能越来越多,越来越臃肿,Size…
参照网页: http://blog.csdn.net/fengyuzhengfan/article/details/52712829 首先是在原生中写一些方法,然后通过react native中js去引用 'use strict'; import { NativeModules } from 'react-native'; module.exports = NativeModules.SplashScreen; 隐藏的方法: componentDidMount() { SplashScreen.…
众所周知,在项目中如果在资源加载请求还未完成的时候,由于阻塞机制,会出现首页白屏的问题,产生很差的用户体验.本文以react为例,提供一个解决方法. 解决原理:使用 onreadystatechange 去监听 readyState,在资源加载完成之前加载一个只有框架的静态页面,页面不请求数据.当数据请求完成之后再将路由切换到真实的首页. 废话不多说,上代码: main.js import React from 'react' import ReactDom from 'react-dom' i…
我们用RN去开发Android应用的时候,我们会发现一个很明显的问题,这个问题就是启动时每次都会有1~3秒的白屏时间,直到项目加载出来 为什么会出现这个问题? RN开发的应用在启动时,首先会将js bundle读取到内存中,然后再完成渲染.那么这段等待的时间就导致了白屏的问题.(换句话来说,这个白屏时间是程序为了完成初始化加载数据,做一些初始化工作所保留的时间,如果在这段时间中不对启动屏做一些优化,就会呈现给用户一个白屏的时间段,用户体验较差) 我们可以利用白屏做点什么? 目前我们手机上所安装的…
运行React Native出现白屏,无法运行,查看终端报错如下: 原因: 代码中有语法错误,导致运行失败. 其实到这里可以去Xcode查看控制台打印,会提示哪个文件出现错误的. 解决办法: 找到报错文件,修改错误即可.…
实现思路 思路大流程: 1.APP启动的时候控制ReactActivity从而显示启动屏. 2.编写原生模块,提供一个关闭启动屏的公共接口. 3.在js的适当位置(一般是程序初始化工作完成后)调用上述公共接口关闭启动屏. 目录结构 SplashScreen:创建Diaolg,当白屏的时候显示用. SplashScreenModule.SplashScreenReactPackage:Dialog关闭的桥接,需要在MainApplication中注册. lanuch_screen.png:Dial…