1、产生原因   

关于点击app图标出现白屏和黑屏的产生原因,首先要说的就是app的启动模式:冷启动(cold start),暖启动(warm start),热启动(lukewarm start)。

  • 冷启动:是指进程从无到有的过程。因为要进行页面初始化,所以相对其他两个启动方式,消耗的时间是相对比较多的。
  • 热启动:是指之前的进程还在,在之前进程的基础上创建 Activity 的过程。

我们遇到的白屏黑屏问题就是在app的冷启动时期产生的,一般就是app从后台移除再点击进入的时候。因为在app冷启动的时候需要做一些了初始化操作application、LAUNCHER。在一些列初始化的时间里系统为通知用户已进入app会弹出一个预加载页面告诉app已经启动。如果未做任何处理就会出现白屏和黑屏的现象。

2、解决方式

解决方式主要是对启动页Theme的处理

<activity
    android:name=".LogoActivity"
    android:theme="@style/StartTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

(1)隐藏预加载页面(不推荐)

既然白屏的原因就是app预加载页面弹出造成的,我们可以把它隐藏掉。

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="android:windowDisablePreview">true</item><item name="android:windowNoTitle">true</item><item name="android:windowActionBar">false</item><item name="android:windowBackground">@android:color/white</item></style>

把windowDisablePreview设置成true,这样就不会出现白屏和黑屏的问题然而会使我们点击app的时候会短暂的停留在手机屏幕一段时间然后直接进入LAUNCHER_ACTIVITY,造成一种手机卡顿的现象,在性能差的手机上更明显。(360手机助手就是这种现象)

(2)为启动页Theme设置一个透明背景(不推荐)

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="android:windowIsTranslucent">true</item><item name="android:windowNoTitle">true</item><item name="android:windowActionBar">false</item><item name="android:windowBackground">@android:color/white</item></style>

把windowIsTranslucent设置成true,类似于把预加载页面隐藏了,最终效果类似于隐藏预加载页面。

(3)给启动页Theme设置一个和启动页一样的背景图片

<style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:windowNoTitle">true</item><item name="android:windowContentOverlay">@null</item><item name="android:windowBackground">@drawable/layer_launcher</item><item name="android:windowFullscreen">true</item></style>

为解决不同屏幕手机图片被拉伸的问题(华为手机虚拟键盘),我们创建一个layer-list drawable文件。这也解决了启动页图片跳跃的问题。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@android:color/white" /><item><bitmapandroid:gravity="center"android:src="@drawable/background" /></item>
</layer-list>

同时注释掉// setContentView(R.layout.activity_logo);,这样就保证了预加载页面和启动页一致。

3、特殊情况

做完上面的操作基本上已经解决了闪屏的问题。当在观察华为手机时,再从预加载页面切到LAUNCHER_ACTIVITY时会闪一下(淘宝启动页偶尔就会出现)。原因可能是在LAUNCHER_ACTIVITY的onCreate中执行了一些反序列化和网络请求等耗时操作。我的解决方式是创建一个Handle延迟一秒执行初始化操作。

new Handler().postDelayed(new Runnable() {@Overridepublic void run() {mSharedPreferences = getSharedPreferences("phone", Context.MODE_PRIVATE);//友盟MobclickAgent.setDebugMode(true);MobclickAgent.enableEncrypt(true);mRequestQueue = Volley.newRequestQueue(LogoActivity.this);getNewVersion();}},1000);

到此问题基本上就解决完了,要是有新的问题可以提一下。

关于android app启动页白屏黑屏和华为手机启动页图片跳跃闪屏的问题相关推荐

  1. 截屏没有了_华为手机居然有6种截屏花招,很多人不知道,你会用哪几种?

    华为手机越来越受国民的欢迎,而且华为手机的功能挺多挺实用的.就比如:支持画"一"进行分屏操作,可以让我们一边追剧一边聊天,真的特别方便. 我使用华为手机也已经有三个年头了,在日常生 ...

  2. 截屏当前界面_华为手机居然有这3种神奇的截屏方法,用过后,我就再也离不开了...

    手机上看到有用的东西,我们通常都会把它截屏下来,分享到微信朋友圈,或者存放在我们手机内存里以备后用.所有的品牌手机,基本上都提供了"手机按键截屏"和"通知栏里的截屏按钮& ...

  3. 华为使用计算机投屏要打开什么,华为手机怎么投屏到电脑?这些小屏变大屏的操作你会吗...

    原标题:华为手机怎么投屏到电脑?这些小屏变大屏的操作你会吗 无论的玩手游还是看视频,如果能把手机小屏的头内容投屏到大屏就好了~ 经常看到有人问:华为手机怎么投屏? 其实华为发布的MateX.Mate2 ...

  4. 华为手机如何压缩视频?录屏压缩全都要

    在现今社交媒体的时代,分享生活中的点滴已经成为了一种常态.华为手机相机的优秀表现,让许多人喜欢用它来拍摄记录生活,而录屏功能则更方便地记录了更多生活中的瞬间.但是,录屏的视频文件大小往往较大,难以分享 ...

  5. android启动页背景设置,Android APP启动页白(黑)屏问题及解决方法

    一.引言 使用Android智能手机用户都有碰到过,当一个APP启动时,有的APP启动界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页. 这个白屏或者黑屏的问题真的很影响体 ...

  6. 关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题

    现象 今天工作中,在对公司产品进行测试的时候,程序员小哥点出了一个问题.问题点出的步骤是这样的: 1.安装APP 2.点击打开 3.经过闪屏页,进入主页后,点击HOME键 4.再次进入程序会重新进入闪 ...

  7. 关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题...

    现象 今天工作中,在对公司产品进行测试的时候,程序员小哥点出了一个问题.问题点出的步骤是这样的: 1.安装APP 2.点击打开 3.经过闪屏页,进入主页后,点击HOME键 4.再次进入程序会重新进入闪 ...

  8. 检测android app是否在白名单内

    这 里 是 导 航 栏 1工具方法 2调用处 项目上需求 要系统的添加白名单的操作 这里需要提示用户手动给添加白名单权限 这里涉及到检测app是否在白名单内 这点就不太好搜索 这里提供一个方法 话不多 ...

  9. 华为手机截屏怎么截长图_华为手机竟然有6种截屏方法,你用过几种?3种以上的手机没白买...

    很多时候我们都喜欢通过手机截图来对一些信息进行保存分享,那么常用华为手机,关于华为手机截图方法你知道几种呢? 悄悄告诉你,其实华为手机截图方法多达6中,各种花样截图方法都有,就是可惜了很多小伙伴都不知 ...

最新文章

  1. asin java_Java asin() 方法
  2. 文件操作---with语句
  3. php使用mysql5和8的区别_mysql8.0和mysql5.7的区别是什么?
  4. webpack4 filemanager-webpack-plugin 打zip包失败问题
  5. UpdatePanel 属性学习之 UpdateMode
  6. python笔记--元组
  7. 我的世界java版怎么打开聊天栏_我的世界JAVA版才有的隐藏模式只有开发者才知道怎么进入...
  8. F检验临界值表(Frideman检验表)
  9. 浅谈游戏《底特律:变人》
  10. 一个30岁转行程序员的心路历程
  11. 7-43 查询水果价格
  12. CentOS7搭建私有化Docker仓库Harbor
  13. 第一次实习经历分享Android开发
  14. 双系统下ubuntu自动挂载windows盘
  15. mc服务器libs文件夹,我的世界为什么开不了服务器
  16. linux如何运行windows游戏,用Steam Play在Linux系统中玩Windows游戏的方法
  17. tp6_layui_01_登录页面的实现
  18. 微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)
  19. OE系统终结,其缔造者 Dark-Alex 宣布退出PSP破解领域
  20. 炮弹仿真系统matlab软件下载,基于Matlab/Simulink的导弹六自由度弹道仿真系统设计...

热门文章

  1. BAT的一个定时关机脚本
  2. 戴尔中国“三包服务”相关问答
  3. 我的Tensorflow学习之路
  4. Arduino I2C + DS1307实时时钟
  5. 测试USB 读写速度
  6. 固件模拟-Firmadyne
  7. windows安装ElasticSearch
  8. 【Hive知识体系详细教程】
  9. 初等数论--二次剩余与二次同余方程--成为二次剩余的充要条件
  10. 硬件基础——驱动电路