展开

关键词

React Native 启动问题解决方案,教程

给人的感觉很不友好,那有没有办法不显示呢?上文解释了:为什么React Native应用会在启动的时候显示一会。既然知道了出现问题的原因,那么离解决问题也不远了。 Android启动解决方案我们可以通过为React Native Android应用添加启动的方式,来解决启动的问题。 我在《React Native Android启动,启动,闪现》一文中介绍过一种为React Native Android应用添加启动的方法, 不过那种方法虽好,但牵扯到对React Native 在《React Native Android启动,启动,闪现》一文中 我们使用的是在根视图容器上添加一个视图作为启动,当js bundle加载并渲染完成后,再将添加的视图从根视图上移除。 在根视图上添加一个视图的方式其实就是为了遮挡,既然是遮挡,我们是不是可以弹出一个对话框呢?

92860

解决 APP启动问题

为什么我的 APP 启动会或者黑有时候我们会发现,我们在启动我们自己的 APP 的时候,总是有那么点时间是(黑),经过了(黑)后才会进入我们的 APP。那么这是为什么呢? 模拟效果下面我们模拟一下的效果可以看到打开 APP 的时候会有的现象出现,当然我的这个演示 APP 程序没有那么复杂,因此我为了实现这种效果,就在 Application 中做了个睡眠。 所以其实我们看到的或者黑就是 StartingWindow,那么为什么是色或者黑色呢? 黑就是应用了 @android:styleTheme.Black,好了到这里我们就彻底明为什么会出现或者黑了。 再顺便说一下 Activity 布局的绘制顺序:绘制背景绘制 View 本身的内容绘制子 View 绘制修饰内容(例如滚动条)解决黑问题通过上面我们已经知道为什么会出现这个问题了,那么解决起来就很简单了

83320
  • 广告
    关闭

    腾讯云前端性能优化大赛

    首屏耗时优化比拼,赢千元大奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React-Native 安卓预加载优化方案

    本文作者:ivweb 朱灵子React-Native安卓预加载优化方案本文针对使用React Native开发混合应用的过程中安卓端时间较长的问题,提出了react-native安卓端RootView 安卓端时间较长的关键性因素我们对不同网络状态下不同机型的React-Native线上项目进行了实时性能监控,下图所示为React Native IOS和安卓端线上性能数据对比分析图对比IOS端与Android 端的首时间数据,我们发现安卓端占有一定的劣势,我们在启动React-Native安卓应用时,会发现第一次启动React-Native安卓页面会有一个短暂的过程,而且在完全退出后再进入,仍然会有这个 ,为什么Android端的时间较IOS较长呢? 综上可知,导致React-Native安卓端时间较长的关键性因素是bundle离线包加载与解析的时间较长,因为React-Native安卓端bundle离线包加载与解析的过程是在java端完成的,而

    2K00

    ❤️Android 性能优化之启动优化❤️

    创建 Application当应用程序启动时,空启动页面保留在幕上,直到系统首次完成应用程序的绘制。 加载大量数据后绘制幕。 加载和解码Bitmap。 VectorDrawable 对象。 Activity 初始化任何全局单例对象。 所有资源初始化。 解决方案如下。 com.scc.demo.actvitiy.MainActivity: +358msIActivityTaskManager: Fully drawn com.scc.demo.actvitiy.MainActivity: +3s207msAPP 启动黑 Android 应用启动时,尤其是大型应用, 经常出现几秒钟的黑,黑取决于主界面 Activity 的主题风格。 优雅的解决黑屛Android 应用启动时很多大型应用都会有一个广告(图片及视频)页或闪页(2-3S),这是为了避免上述启动导致用户体验很差(当然也有打广告的目的)。

    9260

    Android 优化——启动优化

    需要创建 App 进程,加载相关资源,启动 Main Thread,初始化首 Activity 等。在这个过程中,幕会显示一个空的窗口(颜色基于主题),直至首 Activity 完全启动。 类同与冷启动,在这个过程中,幕会显示一个空的窗口(颜色基于主题),直至 activity 渲染完毕。 进程可能还在运行,但是 activity 需要重建。 @drawablelogo_splash 先加载一个不渲染布局的 Activity 作为启动 写一个什么都不做的 LogoSplashActivity public class LogoSplashActivity (this); } finish(); } } 在 AndroidManifest.xml 中设置其为启动,并加上主题 这样启动显示 LogoSplashActivity,本身不渲染布局,显示主题设置的

    34230

    你的 APP 为何启动那么慢?

    image.png这里很明显有两个优化点:1.Application OnCrate()优化 当APP启动时,空的启动窗口将保留在幕上,直到系统首次完成绘制应用程序。 Activity onCreate()优化减少LaunchActivity的View层级,减少View测量绘制时间。避免主线程做耗时操作用户体验优化消除启动时的 ? 冷启动.gif为什么启动时会出现短暂黑的现象? 很显然,如果你的application或activity启动的过程太慢,导致系统的BackgroundWindow没有及时被替换,就会出现启动时或黑的情况(取决于你的主题是Dark还是Light) onCreate之前调用 setTheme(R.style.AppTheme); super.onCreate(savedInstanceState); }这样在启动时就通过给用户看一张图片或是广告来防止黑的尴尬

    54020

    浅谈android性能优化之启动过程(冷启动和热启动)

    和Service,还负责管理Activity和Service。 无论是通过Launcher来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都通过Binder进程间通信进入到ActivityManagerService 内部调用startActivity来启动新的Activity来说,这一步是不需要执行的,因为新的Activity就在原来的Activity所在的进程中进行启动;Step 6. 三、冷启动过程中碰到的以及优化启动时间1、问题 :android studio升级 2.0之后 加上Instant Run,Instant Run为了能够让我们快速部署代码,背后其实是有一套非常复杂的逻辑的 ,比如要在APK中建立服务器与Android Studio进行通信,以及代码差异比对和替换等,在研发过程中可能出现问题,一般release版的程序是不会出现这种现象的;如果接下来还会出现问题,可以查看

    65931

    Android项目实战(四十二):启动页优化,去除短暂或黑

    但是对于自己开发的项目,有时会发现打开app的时候,会有短暂的1秒--2秒的或者黑,然后才进入到程序界面。   个人理解为我们自己实现的Application文件里面做了较多的初始化操作,当这些初始化操作完成后才进入到第一个Activity,这段初始化的时间因为没有界面,应用便会因为主题的类别而显示或者黑。 构成的原因代码如下:*** @author xqx* @email djlxqx@163.com* blog:http:www.cnblogs.comxqxacm* createAt 2017130 E_UM_NORMAL); 禁止默认的页面统计方式,这样将不会再自动统计Activity。 单独设置一个不同的主题,一般第一个Activity即为启动页。

    71660

    Android性能之冷启动优化详析

    这时候淘宝的进程存在,但是Activity可能被回收,这时候只需要重新加载Activity即可。 冷启动通常会发生在一下两种情况: 1)设备启动以来首次启动应用程序 2)系统杀死应用程序之后再次启动应用程序 在冷启动的最开始,系统需要负责做三件事: 1)加载以及启动app 2)app启动之后立刻显示一个空的预览窗口 4)Inflating views 5)布局幕 6)执行第一次绘制 一旦app进程完完成了第一次绘制工作,系统进程就会用main activity替换前面显示的预览窗口,这个时候,用户就可以正式开始与 从冷启动的流程看,我们无法干预app进程创建等系统操作,我们能够干预的有: 1)预览窗口 2)Application生命周期回调 3)Activity生命周期回调 5.冷启动优化 1)预览窗口 为什么启动时会出现短暂黑的现象 很显然,如果你的application或activity启动的过程太慢,导致系统的BackgroundWindow没有及时被替换,就会出现启动时或黑的情况(取决于你的主题是Dark还是Light)

    17410

    性能优化(一)APP 启动优化(不敢说秒开,但是最终优化完真不到 1s)

    应该有的同学知道是怎么一回事儿了,当我们在系统桌面任意点击一个 APP 是不是会发现启动的时候有一瞬间有出现(以前老版本是黑) 那么我们怎么来优化这个黑的问题勒,现在我们先来了解一下 Android APP 启动黑问题终于到了正题了,下面我们就来说下启动黑的问题,还是先来看一个 GIF 吧。市面上 APP 黑? 从上面的一段录我们可以发现市面上常见的 APP 启动有的是有的是做了优化。黑只有在 Android 4.n 具体是哪个版本我也忘了。那么现在我们就以我现在的真实项目来优化一下启动。 真实项目中优化简介首先为什么会造成勒我们来看一段源码??最后就是这个 windowBackground 搞的鬼,知道了是这个搞的鬼那么我们就可以来进行优化了。 优化方案 三单独做成一个 AppTheme.Launcher true @colorcolorAccent 在清单文件中 启动 Activity 加入该 主题 在启动 Activity 页面中加入 setTheme

    41520

    优化App冷启动,实现启动页错觉秒开

    APP启动时,界面会首先展示一个或者黑,然后再进入欢迎页,稍作停留最后进入APP主页。 于是系统会根据你的manifest文件设置的主题颜色的不同来展示一个或者黑。这个黑(就称为Preview Window,即预览窗口。 但其表现行为与冷启动一致,还是会先显示一个Preview Window(黑)直到app渲染activity。 接下来看看如何优化冷启动:既然我们已经找到这个黑是出自系统的预览窗口,我们就可以通过操控这个窗口来实现。 1.更改窗口的颜色背景2.设置窗口全显示在Manifest文件中的启动页activity添加自定义的主题android:theme=@styleSplashTheme ?

    68730

    App冷启动与启动处理

    特点:未清理后台任务,再次启动3为什么出现在一个Activity打开时,如果该Activity所属的Application还没有启动,系统会为这个Activity创建一个进程;每创建一个进程,都会执行一次 Application的onCreate()方法;Application的onCreate方法执行完后,启动的Activity的onCreate方法才会开始执行;在Application的onCreate 方法中执行耗时间的操作,就会出现。 5如何解决大致有以下三种方法:使用IntentService实现异步处理耗时的操作;将背景图设置成我们APP的Logo图,作为APP启动的引导,现在市面上大部分的APP也是这么做的将背景颜色设置为透明色 ,在启动页出现前幕一直显示桌面推荐使用第一种解决方法,当然,三个方法结合使用效果更好6举例普通处理?

    33020

    Android截的几种实现

    #Android截的几种实现##方式一 public static Bitmap capture(Activity activity) { activity.getWindow().getDecorView ; Bitmap bmp = activity.getWindow().getDecorView().getDrawingCache(); return bmp; }此种方式比较简单只需传入当前要截取幕的 Activity对象即可,不需要添加任何权限,后续可将截图的bitmap保存到本地即可;缺点:无法截取WebView页面,截后是! ##方式二使用adb Shell命令截例如:adb shell screencap -p sdcardsreenshot1.png命令格式:adb shell screencap -p + 文件路径 + 文件名##方式三从Android 5.0开始 Google开放了截的api截取方式如下:1.在Activity中开启截服务 if (Build.VERSION.SDK_INT >= 21) {

    2.3K20

    启动优化

    比如开机后,点击幕的app图标启动应用。冷启动的过程主要分为两步:1)系统任务。加载并启动应用程序;显示应用程序的空启动窗口;创建APP进程 2)APP进程任务。 启动主线程;创建Activity;加载布局;幕布局;绘制幕其实这不就是APP的启动流程嘛?所以冷启动是会完整走完一个启动流程的,从系统到进程。温启动。 温启动指的是App进程存在,但Activity可能因为内存不足被回收,这时候启动App不需要重新创建进程,只需要执行APP进程中的一些任务,比如创建Activity。 优化方案 1)消除启动时的App启动的时候会有一个时间,我们可以通过设置windowBackground属性来给启动的Activity提供一个drawable,这样就给用户一个快递启动的假象了 总结 最后再和大家回顾下今天说到的启动优化方案:消除启动时的。windowBackground。第三方库懒加载异步加载。线程池,启动器。预创建Activity。对象预创建。预加载数据。

    26730

    Android开发常用的知识点

    (宽比高要长) portrait–竖显示(高比宽要长) user–用户当前首选的方向 behind–和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) sensor 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到幕上当前的焦点是可见的。 adjustResize 该Activity主窗口总是被调整幕的大小以便留出软键盘的空间 adjustPan 该Activity主窗口并不调整幕的大小以便留出软键盘的空间。 (imm.isActive) { 如果开启 imm.hideSoftInputFromWindow(activity.window.decorView.windowToken, 0) } }}点击空隐藏键盘 Kotlin** * 点击空区域隐藏键盘.

    34110

    App 启动优化

    Android 启动时间测量方式adb shell start am -W packname首activity输出: - This time:最后一个activity启动耗时 - Totaltime: Android APP启动时会出现由于应用程序启动时冷启动,系统会默认在启动时启动空窗口 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。 . - 创建应用入口的Activity对象. - 填充加载布局Views - 在幕上执行View的绘制过程measure -> layout -> draw应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口 启动优化透明主题优化为了解决启动窗口问题,许多开发者使用透明主题来解决这个问题,但是治标不治本。 虽然解决了上面这个问题,但是仍然有些不足。    <! ,可以在启动 Activity 的 Theme中设置闪页图片,这样启动窗口的图片就会是闪页图片,而不是

    17810

    解析Android点击事件分发机制

    开头说说初衷网上关于点击事件分发的文章一搜一大堆,标题一看,不是“30分钟让你弄明XXX”就是“这是讲解XXX最好的文章”,满怀憧憬与信心,忍不住兴奋的点进去一看,发现不是代码就全是图,我基本上看完了所有相关的文章 所以最后还是决定自己去试一试,看一看点击事件分发到底是怎么个流程,我写的肯定不会比其他文章好多少,但是呢,带着一个初学者的心,去分析这个东西,自己能弄明的同时,也让想学习这个的人看了之后有些许收获,那就足够了 运行的环境所有的源码都基于API 26,也就是Android8.0奥利奥,Android Studio 3.0.1,想要自己敲代码试试的同学可以参考一下进入正题分析点击事件分发流程,是想弄明当我们用手指去点击幕的时候 ,分为三个动作,按下,移动和抬起,幕上的东西是怎么知道我们点了它的,在这中间到底经历了什么。 开始点击,移动手指后抬起然后来点一点幕上的控件看看打印的log,dispatchTouchEvent和onTouchEvent都返回默认的实现super,onInterceptTouchEvent默认返回

    22110

    Android应用的保活方案以及另类出路,你了解几个

    当然现在已经有很多方案在做这件事了,但是有一个问题就是像微信中及时接受消息的应用如果系统把他强杀之后接收不到消息,用户也是要疯掉的,所以系统厂商会给出一个名单有一些应用是不会强杀的。一 ? 一、常见保活方案 1、监听广播:监听全局的静态广播,比如时间更新的广播、开机广播、解锁、网络状态、解锁加锁亮(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效。 覆盖在getWindow()的view上、循环播放无声音频(黑科技,7.0下杀不掉)3、监听锁广播:使Activity始终保持前台4、使用自定义锁界面:覆盖了系统锁界面。 5、通过android:process属性来为Service创建一个进程6、跳转到系统名单界面让用户自己添加app进入名单三、保活的另类出路我们知道现在很多应用都想开启自启动权限,这样应用就可以保活很久了了 ,这里不多说了,这样启动的话保证在10ms之内完成,这样就可以赶在系统获取Task之前了:第四点:在启动之后要在一定时间内把一像素Activity关闭,不然最顶端的一像素Activity会夺取幕的触控焦点

    63910

    Android绘图机制与处理技巧-更新中

    --幕的尺寸信息Android手机幕,不管是分辨率还是大小,五花八门。。。 要想在不同的幕上保持绘图的准确性,需要对幕有充分的认识.幕参数幕大小 指幕对角线的长度,通常用寸来表示。 ----独立像素密度dpAndroid使用mdpi即密度值为160的幕作为标准,在这个幕上 1px = 1dp .其他幕则可以通过比例进行换算。 activity) { return getScreenHeight(activity) - getStatusBarHeight(activity); } ** * 返回幕像素密度 * * @param mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); } @Override protected void onDraw(Canvas canvas) { 画布背景

    10640

    Android编程实现状态保存的方法分析

    3、按下电源按键(关闭幕显示)时。 4、从activity A中启动一个新的activity时。 5、幕方向切换时,例如从竖切换到横时。 在幕切换之前,系统会销毁activity A,在幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行 总而言之,onSaveInstanceState 所以要明这一点:onSaveInstanceState()并不是永远都会调用。 现在应该明了:在onPause(),onStop()以及onDestroy()中需要保存的是那些需要永久化是数据,而不是保存用于恢复状态的数据,状态数据有专门的方法:onSaveInstanceState 测试你程序的状态恢复能力的最好方法是:旋转幕,每当幕的方向改变时,当前的activity就会被系统销毁,然后重新创建。

    16131

    相关产品

    • 云服务器

      云服务器

      腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券