Android优化之启动页去黑屏实现秒启动

前言

还记得之前我们写了一篇文章,基于RxJava实现酷炫启动页,然而当我们点击桌面图标启动APP时,有时会闪一下黑色背景,有时黑色背景时间还比较长,哎呀,难看死了,这个怎么办捏,别方,我们今天就来看看启动页的优化。

一、消除启动时的黑屏

点击桌面launcher图标启动APP,闪现的黑色背景其实是出现在我们看到界面第一帧之前。那我们就要想办法让这个黑色的背景变成用户喜欢看到的画面或者让它透明化。有了思路方法也就粗现了,我们有下面两种方案:

自定义WelcomActivity的Theme

说白了,就是把出现的黑屏通过android:windowBackground属性设置为我们想要的背景。

1.在Style.xml中定义如下style

<style name="WelcomeStyle" parent="android:Theme">
  <item name="android:windowBackground">@drawable/welcome_bg</item>
  <item name="android:windowNoTitle">true</item>
</style>

其中welcome_bg可以是我们APP的Logo背景。

2.在manifest文件中配置WelcomeActivity

<activity
   android:theme="@style/WelcomeStyle"
   android:name=".Activity.WelcomeActivity" >
</activity>

使用透明主题android:Theme.Translucent.NoTitleBar.Fullscreen

使用透明主题,点图标后在桌面上要等上那么一小会儿,然后是整个界面才会一下子显示出来,让人误以为慢的是桌面launcher而不是应用(呜呜,手机厂商表示这个锅我不背)。是不是觉得很有小心思呢?其实微信也是这么用的,不行你点微信试试~~

1.在Style.xml中定义如下style

<style
   name="Appwelcome"
   parent="android:Theme.Translucent.NoTitleBar.Fullscreen">
</style>

2.在manifest文件中配置WelcomeActivity

<activity
   android:theme="@style/Appwelcome"
   android:name=".Activity.WelcomeActivity" >
</activity>

好了,就这么简单,现在我们来看看第二种方法的效果:

是不是没有黑色背景闪现了呢,确实是昂。其实我们还能优化,让启动更快,请继续看。

二、启动优化,让APP秒开

优化Application

从用户点击launcher图标到看到界面第一帧为应用启动过程,主要会经过以下这些方法:

main()->Application:attachBaseContext()->onCreate()->Activity:onCreate()->onStart()->onResume()

main->Activity创建的这个过程会经过一系列framework层的操作,对于系统自动执行的操作我们不易进行优化,但是,如果我们继承Application自定义了自己的Application,可以做如下优化:

1.尽量不将一些业务逻辑放于Application中;

2.不以静态变量的方式在Application中保存应用数据;

3.不要把文件、数据库的操作放在Application

优化启动页Activity

启动页尽量不要网络请求等耗时操作。如果使用了请求网络等操作在适当的时候应该及时取消的耗时操作。例如,某些时候,当用户点击了launcher图标,但马上又想退出点击了返回键,过了几秒钟用户在使用其他APP,突然跳转到我们的APP那就用户体验感很不好了。所以可以在返回事件中取消掉耗时操作

@Override
public void onBackPressed() {
super.onBackPressed();
....                //在这里取消的耗时操作
}

或者也可以流氓一些,直接在启动页Activity重写onKeyDown()方法,首先判断用户按下的是否是返回按键,若是的话则直接返回true,这样就屏蔽了返回按键的后续执行逻辑达到了禁止用户返回操作的目的,看代码

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
       return true;
   }
   return super.onKeyDown(keyCode, event);
}

就这样,本文内容到这就结束了,大家有更好的优化技巧欢迎留言交流学习,希望本文对大家开发Android有所帮助。

(0)

相关推荐

  • Android开发之开发者头条(一)启动页实现

    废话就不多说了,开始今天的正题,带你实现开发者头条APP的启动页. 一.老规矩,先上效果图 从效果图中我们可以看出,整个滑动的界面就是一个ViewPager实现,然后监听ViewPager的滑动事件,改变底部四个小图标的切换,以及跳转到首页的按钮的隐藏显示. 二.代码实现 1).整个布局文件.上面是ViewPager,下面是四个小图标存放的容器. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi

  • Android启动页面定时跳转的三种方法

    从我所做的项目来看,几乎都少不了开始页面,启动页面的作用能够打广告.发公告.做缓存处理.更新数据等等!Android实现开始页面的跳转,就是打开一个Android手机APP的欢迎界面后跳转到指定界面,下面就让我简单介绍下比较常用的开始页面的跳转方法吧. 一.在onCreate里设置个Timer,然后建立Intent指向你要调用的Activity.设置Timer 任意秒后执行startActivity即可!(Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,它可以计划执行一个任务一次

  • Android启动引导页使用ViewPager实现

    我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等. 一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单,但在安卓上如何实现呢. 今天就和大家一起来学习用官方v4支持包下的ViewPager来实现这个效果. 先上图: 下面是我的实现,一个xml布局,一个GuideActivity和一个GuidePageAdapter.  先上XML. <?xml version="1.0" enco

  • Android实现APP欢迎页面简单制作思路

    现在的APP一般都会在应用启动时有一个欢迎界面,这种欢迎界面一般有两种情况,一种用来在应用启动时在后台检测网络状态,亦或者是加载网络数据等一些耗时操作,比如QQ.微信.还有一种是在启动页方式自己的品牌标志,一般为Logo,例如淘宝.今天我将通过简单地代码来实现这两种效果. 1.在后台加载网络数据,运行一些耗时的任务,代码如下: WelcomeActivity.java文件代码 public class WelcomeActivity extends Activity { @Override pr

  • Android实现欢迎页快速启动的方法

    Android 欢迎页快速启动 大家应该都知道,在默认情况下,Android App在点击App logo到App完全启动这之间会有一段时间空白期.那么如何做到在用户点击logo图标之后立即打开App的界面而不是一段白屏或黑屏呢? 设置xml 在drawable下建立welcome.xml <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://sc

  • Android优化之启动页去黑屏实现秒启动

    前言 还记得之前我们写了一篇文章,基于RxJava实现酷炫启动页,然而当我们点击桌面图标启动APP时,有时会闪一下黑色背景,有时黑色背景时间还比较长,哎呀,难看死了,这个怎么办捏,别方,我们今天就来看看启动页的优化. 一.消除启动时的黑屏 点击桌面launcher图标启动APP,闪现的黑色背景其实是出现在我们看到界面第一帧之前.那我们就要想办法让这个黑色的背景变成用户喜欢看到的画面或者让它透明化.有了思路方法也就粗现了,我们有下面两种方案: 自定义WelcomActivity的Theme 说白了

  • Android启动页出现白屏、黑屏的解决方案

    历史原因 当系统启动一个APP时,zygote进程会首先创建一个新的进程去运行这个APP,但是进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,这就很尴尬了,因为用户会以为没有点到APP而再次点击,这极大的降低用户体验,Android需要及时做出反馈去避免这段迷之尴尬.于是系统根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏.而这个黑(白)屏正式的称呼应该是Preview Window,即预览窗口. 好了,现在我们明白了,Preview Window其实是为了提

  • 完美解决Android App启动页有白屏闪过的问题

    应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item

  • Android程序启动时出现黑屏问题的解决方法

    本文实例讲述了Android程序启动时出现黑屏问题的解决方法.分享给大家供大家参考,具体如下: 关于黑屏: 默认的情况下,程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等. 去除方法: 1.在style里面添加一个style: <style name="ContentOverlay"parent="@android:style/Theme.Light"> <itemname

  • ios启动页强制竖屏(进入App后允许横屏与竖屏)

    这篇文章主要介绍了在ios启动页强制竖屏,进入App后允许横屏与竖屏的相关资料,需要的朋友可以参考下. 方法如下 1.修改App-info.plist(在XCode中General中设置 一样的效果) <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> 2.AppDele

  • Android启动APP时黑屏白屏的解决方法

    在开发中,我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,不同设备时间长短不同.很影响用户体验. 首先分析一下,产生这个现象的原因,当我们在启动一个应用时,系统会去检查是否已经存在这样一个进程,如果不存在,就是冷启动.系统和APP本身都有很多工作需要处理.首先系统的服务会先检查startActivity中的intent的信息,然后在去创建进程,最后才是执行启动Acitivy的操作.而我们上面提到的显示白黑屏的问题,就是在这段时间内产生的. 系统在绘制页面加载布局之前,首先会初始化窗口(

  • Flutter启动页(闪屏页)的具体实现及原理详析

    为什么要有启动页? 在以下文章中,启动页就是闪屏页. 现在大部分App都有启动页,那么为什么要有启动页?这是个值得思考的问题,如果没有启动页会怎样,大部分的App会白屏(也有可能是黑屏,主题设置有关系)非常短的时间,然后才能展示App的内容. 那么问题来了,一定要有启动页吗?答案:不是,而且是尽可能不要有启动页,因为启动页会让用户体验不够连贯,甚至IOS在开发手册上就不推荐使用启动页. 我们深入思考一下,既然不推荐为什么这样流行,答案非常简单,启动页的成本非常低,如果你想把的App启动优化到一个

  • MacOS系统下Unity启动黑屏的解决方法

    前言 Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎. 在最新版的MacOS系统上(MacOS High Sierra 10.13.1),安装Unity 5.3.5f1版本,启动直接显示黑屏,没有熟悉的打开工程.登录等界面.第一次碰到这样的画面,有点懵逼.从网上搜索解决方案,有Windows下的方法,但肯定不适用于MacOS. 无奈之下,自己定位问题并

  • 安装ubuntu时黑屏的解决办法(3种)

    我电脑显卡是Nvidia显卡- 重启之后屏幕显示"输入不支持",这是因为ubuntu对显卡的支持有关,需要手动添加显卡选项:nomodeset,使其支持Nvidia系列显卡 方法一 进入安装时,光标移动到"install ubuntu",按"e"进入编辑模式,进入命令行模式,找到''quite splash''然后去掉"--"后,添加"nomodeset"(依照不同显卡进行不同显卡驱动选项的添加,我们使用的

  • Android Theme以及解决启动黑屏的方法详解

    前言 本文主要介绍了关于Android Theme及解决启动黑屏的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.修改AndroidManifest.xml 设置App的全局Theme或者Activity的界面Theme <application android:allowBackup="true" android:icon="@drawable/ipod_icon" android:label="@string/app

随机推荐