项目总结3:ionic3开发的App在启动过程中部分手机出现白屏或黑屏问题之终极解决方案

问题场景:采用ionic3开发的App,当项目比较大的时候,会出现部分真机设备在启动的过程中有白屏或黑屏的情况。

原因预测:个别手机,尤其是安卓手机的性能比较差,App在启动后进入首页或登录页前的初始化工作还没有完成。

方案总结:在网上查过很多资料发现大部分的解决办法都是简单的分为两种:1、自动关闭启动页;2、设置具体的毫秒后手动关闭启动页;

但是,仍然会有部分项目部分手机还是无法解决这个问题,当你看到这篇文章的时候,很有可能以上两种方案都不适用。

进一步分析原因: 我们无法准确评估自己的App启动在不同的设备上启动到底需要多长时间,所以从理论上说当问题出现的时候,无论是简单的自动关闭还是手动关闭都是不可取的,踩过大量的坑之后,思路终于转变了下。

终极解决方案:让程序去自动检测应用在当前设备每次启动的初始化完毕的时间点,在恰好合适的时刻去关闭启动页再进入首页或登录页。

以下是我的项目中的具体实现代码:

let isStartByHand: boolean = true; // 是否手动关闭启动if (!isStartByHand) { // 自动关闭platform.ready().then(() => {statusBar.styleDefault();splashScreen.hide();});} else { // 手动关闭let startTime = new Date().getMilliseconds(); // 调试用var isCleared: boolean = false;let timeOut = 2000, count = 0; // 记录自动检测的次数,不断地寻找合适的时间节点let interval = setInterval(()=>{if (SplashScreen.installed() && Camera.installed() && File.installed() && AppVersion.installed() && ScreenOrientation.installed()) {console.log("SplashScreen已经安装完毕=====interval=====" + "时间差毫秒值:" + (new Date().getMilliseconds()-startTime));// 防止出现1~2秒钟的白屏,再次延迟隐藏启动页setTimeout(() => {clearInterval(interval);splashScreen.hide();isCleared = true;}, timeOut + 1000 + count++ * 1000); // 加1000错开定时任务延时}},timeOut);// 防止启动时间不够出现闪屏(在首页与启动页之间频繁切换)setTimeout(() => {if (isCleared) {clearInterval(interval);}}, timeOut);platform.ready().then(() => {// 初始化访问量服务GlobalVariables.appVisitCountService = appVisitCountService;// App装机量统计appInstalledService.checkAndSendInstalledInfo();// 强制检验更新this.checkVersionUpdate();clearInterval(interval); // 如果实际启动较快,通过正常关闭启动页,则清除定时任务console.log("========全部插件已经安装完毕=====ready.then=====" + "时间差毫秒值:" + (new Date().getMilliseconds()-startTime));statusBar.styleDefault();splashScreen.hide();this.isIphoneX(platform);this.isDevice(platform);// 自动登录this.autoLogin();});}

备注:如果复制代码套用后发现偶尔出现应用在启动页和首页(或登录页)之间来回切换的问题,则需要调试更改时间参数。

后记:经过大量的反复试验,特别是采用出现启动问题的真机,不断地调试,修改定时和延时任务的时间参数,达到均衡合理的状态,终于把能用的团队手机都适配了,目前上线5个月了没有出现过启动白黑屏的问题。

 

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

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

相关文章

1.Intro to Deep Learning and Computer Vision

Intro 这是Kaggle深度学习教育课程的第一课。 在本课程结束后,您将了解卷积。 卷积是计算机视觉(以及许多其他应用程序)中深度学习模型的基本构建块。 之后,我们将很快开始使用世界一流的深度学习模型。 Lesson [1] from IPy…

【POJ - 2253】Frogger(floyd,或 部分瓶颈生成树的最大边)

题干: 湖中有n块石头,编号从1到n,有两只青蛙,Bob在1号石头上,Alice在2号石头上,Bob想去看望Alice,但由于水很脏,他想避免游泳,于是跳着去找她。但是Alice的石头超出了他…

SpringMVC常用的视图接口分类及实现类

SpringMVC中常用的视图接口分类及对应的实现类: URL资源视图:InternalResourceView、JstlView 文档视图:AbstractExcelView、AbstractPdfView 报表视图:ConfigurableJsperReportsView等JasperReports报表技术的视图 JSON视图&…

2.Building Models from Convolutions

Intro 这是深度学习课程的第2课 在本课程结束时,您将了解如何将卷积结合起来,以实现计算机视觉中的超人成就。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(ToBPiUlLFEY, width800, height450) Keep Going 现在你理解了模…

*【POJ - 2796】 Feel Good (前缀和优化+单调栈维护)

题干: Feel Good Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 12409 Accepted: 3484Case Time Limit: 1000MS Special Judge Description Bill is developing a new mathematical theory for human emotions. His recent investigations are dedi…

SpringMVC配置视图的直接映射view-controller命名空间

通常情况下&#xff0c;如果直接通过url来访问具体的视图会报404错误&#xff0c;这个时候最容易想到的解决办法是通过转发或重定向机制&#xff0c;也就说走一遍目标控制器方法拦截一次。但是最好的方法是配置视图的直接映射关系。 <mvc: view-controller path"url访…

【nyoj-456】 邮票分你一半 (dp,0-1背包的中点问题)

题干&#xff1a; 邮票分你一半 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3 描述 小珂最近收集了些邮票&#xff0c;他想把其中的一些给他的好朋友小明。每张邮票上都有分值&#xff0c;他们想把这些邮票分成两份&#xff0c;并且使…

Angular中父子组件传值@Input @Output @ViewChild最全面最简单的总结

父组件传递给子组件&#xff1a; 值传递方式&#xff1a;Input既可以传递数据也可以传递方法 传递数据&#xff08;不举例了&#xff09;传递方法 // 父组件定义方法 parentRun(){alert(这是父组件的 run 方法); } 调用子组件时传入当前方法&#xff08;是传递方法不是调用方…

《TCP/IP详解》学习笔记(七):广播和多播、IGMP协议

单播&#xff0c;多播&#xff0c;广播的介绍 1单播(unicast) 单播是说&#xff0c;对特定的主机进行数据传送。例如给某一个主机发送 IP 数据包。这时候&#xff0c;数据链路层给出的数据头里面是非常具体的目的地址&#xff0c;对于以太网来说&#xff0c;就是网卡的 MAC 地…

【 POJ - 3628 】Bookshelf 2(dfs 或 dp,0-1背包)

题干&#xff1a; Farmer John recently bought another bookshelf for the cow library, but the shelf is getting filled up quite quickly, and now the only available space is at the top. FJ has N cows (1 ≤ N ≤ 20) each with some height of Hi (1 ≤ Hi ≤ 1,0…

ES5总结1:数组Array新特性最全最精简的详解

2个位置方法&#xff1a;indexOf lastIndexOf 5个迭代方法&#xff1a;forEach every some filter map 2个高阶函数&#xff1a;reduce reduceRight &#xff08;可用于数组求和&#xff09; API: 1、indexOf(searchElement: T, fromIndex?: n…

Apollo自动驾驶入门课程第③讲 — 定位

目录 1. 定位的概述 2. 定位方法介绍 2.1 GNSS RTK 2.2 惯性导航 2.3 激光雷达定位 2.4 视觉定位 2.5 Apollo定位 本文转自微信公众号&#xff1a;Apollo开发者社区 原创&#xff1a; 阿波君 Apollo开发者社区 8月17日 上周我们发布了 Apollo入门课堂第②讲—高精地图&…

【HRBUST - 1621】迷宫问题II (bfs)

题干&#xff1a; 小z身处在一个迷宫中&#xff0c;小z每分钟可以走到上下左右四个方向的相邻格之一。迷宫中有一些墙和障碍物。 同时迷宫中也有一些怪兽&#xff0c;当小z碰到任意一个怪兽时&#xff0c;小z需要将怪兽消灭掉才可以离开此方格。但消灭 怪兽会花费一定的时间。…

Linux与Bash 编程——Linux文件处理命令-L1

目录&#xff1a; linux系统与shell环境准备 Linux系统简介操作系统简史Linux的发行版&#xff1a;Linux与Windows比较&#xff1a;Linux安装安装包下载Linux的访问方式远程登录方式远程登录软件&#xff1a;mobaxterm的使用&#xff1a;使用电脑命令行连接&#xff1a;sshd的…

4.Transfer Learning

Intro 这是深度学习第4课。 在本课程结束时&#xff0c;您将能够使用迁移学习为您的自定义目标构建高度准确的计算机视觉模型&#xff0c;即使您的数据相对较少。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(mPFq5KMxKVw, width800, height450) S…

Angular相关的有价值的问题集锦

001. Angular的三大核心概念是什么&#xff1f; 答&#xff1a;组件化、模块化和路由&#xff08;Component、NgModule、Router&#xff09;,其中最核心的概念是组件化Component。 002. 前端为什么需要Router&#xff1f; 答&#xff1a;如果没有Router&#xff0c;浏览器的…

如何在Word中排版出漂亮规整的编程语言代码样式?【☆】

[1] 能输出各种编程语言并保持代码格式和语法高亮显示的网站&#xff1a; PlanetB | Syntax Highlight Code in Word Documents http://www.planetb.ca/syntax-highlight-word Welcome! — Pygments http://pygments.org/ [2] How do you display code snippets in MS Wor…

网络编程懒人入门(一):快速理解网络通信协议(上篇)

转自即时通讯网&#xff1a;http://www.52im.net/ 原作者&#xff1a;阮一峰(ruanyifeng.com&#xff09;&#xff0c;本文由即时通讯网重新整理发布&#xff0c;感谢原作者的无私分享。 1、写在前面 论坛和群里常会有技术同行打算自已开发IM或者消息推送系统&#xff0c;很…

PCA算法中样本方差和协方差的无偏估计与n-1的由来

原文出处&#xff1a; http://blog.sina.com.cn/s/blog_c96053d60101n24f.html 在PCA算法中的方差协方差计算公式中除数为什么是n-1? 假设X为独立同分布的一组随机变量&#xff0c;总体为M&#xff0c;随机抽取N个随机变量构成一个样本&#xff0c;和是总体的均值和方差, 是常…

【Gym - 101915D】Largest Group(二分图最大团,状压dp)

题干&#xff1a; 大黑山上有小小民和小小涛两种物种&#xff0c;山东人小李想要研究这两种物种的关系 奇怪的是大黑山上有相同数量的小小民和小小涛。小李数了数一共有 P 个&#xff0c;小李分别给P个小小民和小小涛编号 1 - P 号&#xff0c;已知每对小小民之间都是好朋友&…