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中build.gradle的实用技巧

    浅析Android中build.gradle的实用技巧

    这篇文章主要介绍了浅析Android中build.gradle的实用技巧,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Android实现图文垂直跑马灯效果

    Android实现图文垂直跑马灯效果

    这篇文章主要为大家详细介绍了Android实现图文垂直跑马灯效果,图文结合的跑马灯效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 利用Jetpack Compose复刻游戏Flappy Bird

    利用Jetpack Compose复刻游戏Flappy Bird

    Flappy Bird是13年红极一时的小游戏,其简单有趣的玩法和变态的难度形成了强烈反差,引发全球玩家竞相把玩!本文将通过Jetpack Compose复刻这一游戏,感兴趣的小伙伴可以了解一下
    2022-02-02
  • Gradle的缓存路径修改的四种方法(小结)

    Gradle的缓存路径修改的四种方法(小结)

    这篇文章主要介绍了Gradle的缓存路径修改的四种方法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • android TextView 设置和取消删除线的两种方法

    android TextView 设置和取消删除线的两种方法

    这篇文章主要介绍了android TextView 设置和取消删除线的两种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Android面向切面基于AOP实现登录拦截的场景示例

    Android面向切面基于AOP实现登录拦截的场景示例

    这篇文章主要为大家介绍了Android面向切面基于AOP实现登录拦截的场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

    Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

    这篇文章主要介绍了Android开发中4个常用的工具类,包括Toast管理、SharedPreferences存储管理、网络操作及屏幕操作等功能的封装类,需要的朋友可以参考下
    2017-11-11
  • Android 百分比布局详解及实例代码

    Android 百分比布局详解及实例代码

    这篇文章主要介绍了Android 百分比布局详解及实例代码的相关资料,这里附有代码实例帮助大家学习参考,如何实现百分比布局,需要的朋友可以参考下
    2016-11-11
  • 支持多项选择的ExpandableListView

    支持多项选择的ExpandableListView

    这篇文章主要为大家详细介绍了支持多项选择的ExpandableListView,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android 手写热修复dex实例详解

    Android 手写热修复dex实例详解

    这篇文章主要为大家介绍了Android 手写热修复dex实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论