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>

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

welcomepage.gif

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

二、启动优化,让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); 
}

就酱,大家有更好的优化技巧欢迎留言交流学习。
需要完整代码可以戳这里代码传送门

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,946评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,383评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 启动优化,让APP秒开 优化Application 从用户点击launcher图标到看到界面第一帧为应用启动过程,...
    19cdd9982f8a阅读 638评论 3 0
  • 最近的雨尤其多,即使是在大西北这样炽热的地方。今天,没什么好讲的,唯让我有些欣喜的是今天做到了晨跑,虽然出门时已经...
    六个叉是茉莉味的阅读 151评论 0 0