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

 更新时间:2016年08月10日 08:53:09   投稿:daisy  
本文的内容主要是讲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有所帮助。

相关文章

  • Android串口通信之串口读写实例

    Android串口通信之串口读写实例

    这篇文章主要为大家详细介绍了Android串口通信之串口读写实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • android获取时间差的方法

    android获取时间差的方法

    这篇文章主要介绍了android获取时间差的方法,涉及Android操作时间的相关技巧,需要的朋友可以参考下
    2015-04-04
  • 解析Android Jetpack简介

    解析Android Jetpack简介

    Jetpack是一套库、工具和指南的集合,帮助开发者更轻松地编写优质应用,这篇文章主要介绍了Android Jetpack简介,需要的朋友可以参考下
    2022-09-09
  • Android实现Bitmap位图旋转效果

    Android实现Bitmap位图旋转效果

    这篇文章主要为大家详细介绍了Android实现Bitmap位图旋转效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Android高效加载大图、多图解决方案 有效避免程序OOM

    Android高效加载大图、多图解决方案 有效避免程序OOM

    这篇文章主要为大家详细介绍了Android高效加载大图、多图解决方案,有效避免程序OOM,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android 判断网络状态对音频静音的实现方法

    Android 判断网络状态对音频静音的实现方法

    最近小编做项目遇到这样的需求,需要根据当前场景让app变的智能,让app根据使用者当前网络状态,自动记性静音等操作,具体怎么实现呢?下面小编给大家分享实例代码,需要的朋友参考下吧
    2018-10-10
  • Android文件选择器ExFilePicker的使用方法

    Android文件选择器ExFilePicker的使用方法

    这篇文章主要为大家详细介绍了Android文件选择器ExFilePicker的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • xUtils3.0框架学习笔记分享

    xUtils3.0框架学习笔记分享

    这篇文章主要为大家分享了xUtils3.0框架学习笔记,xUtils开源框架的功能介绍,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Flutter利用ORM框架管理数据库详解

    Flutter利用ORM框架管理数据库详解

    使用 ORM 框架最大的好处是简化了数据库维护的代码量,使得我们可以专注于业务代码实现。本篇,我们看看如何使用ORM框架管理数据库版本迁移,需要的可以参考一下
    2023-04-04
  • Android函数抽取壳的实现代码

    Android函数抽取壳的实现代码

    很早之前就想写这类的壳,最近终于把它做出来了,取名为dpt,下面把代码分享出来,对Android函数抽取壳的实现代码感兴趣的朋友一起看看吧
    2022-01-01

最新评论