iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >详解Android冷启动实现APP秒开的方法
  • 453
分享到

详解Android冷启动实现APP秒开的方法

方法启动appAndroid 2022-06-06 07:06:48 453人浏览 安东尼
摘要

一、前言 在阅读这篇文章之前,首先需要理解几个东西: 1、什么是Android的冷启动时间?       冷启动时间是指用户从

一、前言

在阅读这篇文章之前,首先需要理解几个东西:

1、什么是Android的冷启动时间?

      冷启动时间是指用户从手机桌面点击APP的那一刻起到启动页面的

Activity
调用
onCreate()
方法之间的这个时间段。

2、在冷启动的时间段内发生了什么?

      首先我们要知道当打开一个

Activity
的时候发生了什么,在一个
Activity
打开时,如果该
Activity
所属的
Application
还没有启动,那么系统会为这个
Activity
创建一个进程(每创建一个进程都会调用一次
Application
,所以
Application
onCreate()
方法可能会被调用多次),在进程的创建和初始化中,势必会消耗一些时间,在这个时间里,
WindowManager
会先加载APP里的主题样式里的窗口背景(windowBackground)作为预览元素,然后才去真正的加载布局,如果这个时间过长,而默认的背景又是黑色或者白色,这样会给用户造成一种错觉,这个APP很卡,很不流畅,自然也影响了用户体验。

来看下效果图:


优化


优化方案1


优化方案2

二、消除启动时的白屏/黑屏

在用户点击手机桌面APP的时候,看到的黑屏或者白屏其实是界面渲染前的第一帧,如果你看懂了文章头的那2个问题,那么解决这个问题就非常轻松了,无非就是将Theme里的

windowBackground
设置成我们想要让用户看到的画面就可以了,这里有2种做法:

1、将背景图设置成我们APP的LoGo图,作为APP启动的引导,现在市面上大部分的APP也是这么做的。


  <style name="AppWelcome" parent="AppTheme">
    <item name="android:windowBackground">@mipmap/bg_welcome_start</item>
  </style>


2、将背景颜色设置为透明色,这样当用户点击桌面APP图片的时候,并不会"立即"进入APP,而且在桌面上停留一会,其实这时候APP已经是启动的了,只是我们心机的把Theme里的

windowBackground
的颜色设置成透明的,强行把锅甩给了手机应用厂商(手机反应太慢了啦,哈哈),其实现在微信也是这样做的,不信你可以试试。


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

透明化这种做法需要注意的一点,如果直接把Theme引入

Activity
,在运行的时候可能会出现如下异常:


java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

这个是因为使用了不兼容的Theme,例如我这里的

Activity
继承了
AppCompatActivity
,解决方案很简单:

1、让其

Activity
集成
Activity
而不要集成兼容性的
AppCompatActivity

2、在

onCreate()
方法里的
super.onCreate(savedInstanceState)
之前设置我们原来APP的Theme


public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      setTheme(R.style.AppTheme);
      super.onCreate(savedInstanceState);
  }
}

上面的2种做法,我们都需要将Theme引入对应的

Activity


    <activity
      android:name=".app.main.MainActivity"
      android:theme="@style/AppWelcome"
      android:screenOrientation="portrait">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

三、关于启动优化

上面的做法其实可以达到"秒开"APP的效果,不过确不是真实的速度,在Activity创建过程中其实是会经过一系列

framework
层的操作,在日常开发中,我们都会去重写
Application
类,然后在
Application
里进行一些初始化操作,比如存放用户标识的静态化
TOKEN
,第三方SDK的初始化等。

这里给出几点建议:

1、不要让

Application
参与业务的操作

2、不要在

APPlication
进行耗时操作,比如有些开发者会在自己的APP里一系列文件夹或文件(比如我自己),这些I/O操作应该放到"确实该使用的时候再去创建"亦或者是数据库的一些操作。

3、不要以静态变量的方式在

Application
中保存数据等。

当然这是绝对的理想主义,把上面的"不要"2字之前添上"尽量"2字吧,毕竟在实际开发中,这样做确实会让我们方便许多。

对了,补充一点,布局也是很重要的,尽量的去减少布局的复杂性,布局深度,因为在

View
绘制的过程中,测量也是很耗费性能的。

好了,以上就是Android冷启动实现APP秒开的全部内容,希望这篇文章的内容对大家日常开发App能有所帮助,如果有疑问可以留言交流。

您可能感兴趣的文章:浅谈android性能优化之启动过程(冷启动和热启动)解决Android应用冷启动时出现的白屏问题的方法Android冷启动实现app秒开的实现代码Android性能之冷启动优化详析


--结束END--

本文标题: 详解Android冷启动实现APP秒开的方法

本文链接: https://www.lsjlt.com/news/24101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android冷启动实现app秒开的示例分析
    这篇文章将为大家详细讲解有关Android冷启动实现app秒开的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:AndroidManifest里对应activity添加属性android:...
    99+
    2023-05-30
    android app
  • android开机自动启动app的解决方法
    经过多次尝试之后,终于找到了开机自动启动App的解决方法 开机后会停留在锁屏页面,且短时间内如果没有进行解锁操作,屏幕会进入休眠状态,所以启动APP时需要先唤醒屏幕和解锁屏幕 定义一...
    99+
    2024-04-02
  • Android app启动节点与上报启动实例详解
    目录app启动的关键节点启动时间怎么算方案1: 参考firebase:方案2 : ams总结app启动的关键节点 经常利用content provider 和Androidx里的 s...
    99+
    2024-04-02
  • Android app启动图适配方法实例
    目录前言1、设置splash主题2、 splash_bg 设置:3、splash布局文件设置:附问题:项目启动时,会有白屏现象(在点击 应用图标到看到启动页之间)。总结前言 app启...
    99+
    2024-04-02
  • Android启动页优化之实现应用秒开
    Android 应用冷启动时,需要从Application开始启动,加载时间就会比较长,这段时间里,用户所能看到的就是”白屏“(这是因为默认的AppTheme的 android:wi...
    99+
    2024-04-02
  • Android app启动节点与上报启动的方法
    本文小编为大家详细介绍“Android app启动节点与上报启动的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android app启动节点与上报启动的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • Android冷启动耗时优化的方法是什么
    这篇文章主要介绍了Android冷启动耗时优化的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android冷启动耗时优化的方法是什么文章都会有所收获,下面我们一起来看看吧。1,背景最近开发了一个新的...
    99+
    2023-06-26
  • Android广播怎么实现App开机自启动
    今天小编给大家分享一下Android广播怎么实现App开机自启动的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概括在安卓...
    99+
    2023-06-30
  • 详解Android中的ActivityThread和APP启动过程
    目录ActiviryThreadActivityThread的初始化主线程Looper的初始化主线程Handler的初始化ApplicationThread及Activity的创建和...
    99+
    2024-04-02
  • Android开发App启动流程与消息机制详解
    目录引言1、第一步了解 ThreadLocal2、App的启动流程3、Activity中创建Handler引言 相信很多人对这个问题不陌生,但是大家回答的都比较简单,如谈到app启动...
    99+
    2024-04-02
  • android开机自启动apk的方法
            在Android系统中,开机自启需要在系统启动时启动一个服务或应用程序。为了使应用程序成为开机自启应用程序,您需要完成以下步骤: 1 在应用程序的AndroidManifest.xml文件中,添加以下权限: 2 在应用程序...
    99+
    2023-09-06
    android
  • Android拼接实现动态对象方法详解
    目录1. 前言2. 动态选密钥3. 换肤上的使用4. 总结1. 前言 我们往往有些配置文件,当项目大的时候,一些配置文件或者一些判断逻辑就会变得复杂,会出现很多判断语句,我在想,能...
    99+
    2023-03-01
    Android拼接动态对象 Android 动态对象
  • Android开发简单实现摇动动画的方法
    本文实例讲述了Android开发简单实现摇动动画的方法。分享给大家供大家参考,具体如下:先创建shake.xml<?xml version="1.0" encoding="utf-8"?><translat...
    99+
    2023-05-30
    android 动画 画的
  • Android中混合移动App开发的方法是什么
    本文小编为大家详细介绍“Android中混合移动App开发的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中混合移动App开发的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1...
    99+
    2023-06-04
  • android开机自启动的方法是什么
    Android开机自启动的方法有以下几种:1. 使用BroadcastReceiver:创建一个继承自BroadcastReceiv...
    99+
    2023-08-12
    android
  • 利用Android实现光影流动特效的方法详解
    目录前言MaskFilter 类简介MaskFilter 的几种效果对比光影流动光影流动效果1光影流动效果2光影流动效果3光影流动效果4:光影沿贝塞尔曲线流动总结前言 Flutter...
    99+
    2024-04-02
  • Android 两种启动模式的实例详解
    Android 两种启动模式的实例详解Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONTActivity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和...
    99+
    2023-05-30
    android 启动模式 roi
  • Android开发之设置开机自动启动的几种方法
    Android开发之设置开机自动启动的几种方法方法一:<!-- 开机启动 --> <receiver android:name=".AutoStartReceiver"> <intent-filter>...
    99+
    2023-05-30
    android 自动启动 roi
  • 解决 Android APP 启动页白屏问题及如何实现全屏显示
    目录 一、白屏原因分析 二、解决白屏方案 方案一、提供 .png 背景图 方案二、使用 Layout-list 制作背景 1.  制作替代白屏的背景:bg_splash.xml 2. 将 bg_splash.xml 设为 Window 背景...
    99+
    2023-09-09
    android
  • Android中WebView实现点击超链接启动QQ的方法
    前言之前有次在面试的时候,面试官问了一个如何在WebView点击超链接启动类型QQ类似第三方应用,我当时的回答是用WebView与js交互可以做到。面试官听了没再说什么,应该是答案不是他期望的。今天发现原来可以这样实现,记录一下。实现思路在...
    99+
    2023-05-31
    android webview 超链接
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作