Android实战APP启动速度优化
APP启动速度非常重要,APP启动速度慢,可能会造成用户体验不良好,尤其是在最近用Android studio之后,如果长时间不打开app,启动速度就会特别的慢,下面我们一起探讨一下影响app启动速度的原因,以及解决方案。
检测启动时间
首先我们要知道app的启动时间,然后你也可以凭着感觉来,这里我教大家一个装逼的方法:
adb shell am start -W [packageName]/[.MainActivity]
用adb命令可以检测启动时间,示例如下:
./adb shell am start -W "com.hchstudio.dict"/".MainActivity" Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.hchstudio.dict/.MainActivity } Status: ok Activity: com.hchstudio.dict/.MainActivity ThisTime: 7524 TotalTime: 7524 WaitTime: 7551 Complete
- com.hchstudio.dict为应用包名
- .MainActivity为所要启动的主页面函数
- WaitTime为我们所关注的启动时间
那么7551算不算启动时间长呢?答案是很长,。。。这是一个很长时间没有启动的app,当它第一次启动的时候就有很长的启动时间,下面来说怎么来减少吧。
减少应用启动耗时
app的启动流程,简单的说,主要包括两部分:
- Application
- 启动界面的onCreate方法
因此最简单的方法就是尽量减少这两个方法中的耗时操作。
上面的方法从代码上解决了启动速度,但是用户启动的时候还是感觉慢,怎么办呢?直接上代码:
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorAccent</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.Launcher"> <item name="android:windowBackground">@color/colorLauncher</item> </style>
这是android style文件,其中AppTheme.Launcher为启动界面的主题样式,给你的app首页主题样式加上android:windowBackground,放一下app的背景图片,这样即使app启动慢,也会首先加载背景,这样就会给用户造成一种假象,认为是app已经启动。
Instant Run
对于Android studio的新功能Instant Run,你知道多少呢?
Instant Run也是影响启动的因素之一,不过这个在发布的版本里是没有的,所以小伙伴们不要担心。
您可能感兴趣的文章:
- 如何在Android App中集成支付宝和微信支付功能
- Android AIDL实现两个APP间的跨进程通信实例
- Android使用AIDL实现两个App间通信
- Android控件实现直播App特效之点赞飘心动画
- 详解Android运行时权限及APP适配方法
- Android 如何使用短信链接打开APP
- Android SwipeRefreshLayout仿抖音app静态刷新
- Android实现京东App分类页面效果
相关推荐
-
Android SwipeRefreshLayout仿抖音app静态刷新
SwipeRefreshLayout的功能就是可以让我们的界面在不动的情况下,下拉直接刷新 废话不多说,效果图奉上: activity_listview布局文件 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/sr1" android:layout_width="match_parent" android:layout_height="match_parent"&
-
Android实现京东App分类页面效果
今天群里有人问了关于仿京东App分类页面的实现,而我之前正好查过这方面的资料,手上正好有一个demo,正好分享给大家看看,个人觉得效果棒棒哒! 首先来看效果图吧 是不是很6呢,来分析这个demo的主体构成吧,顶部为搜索栏,左侧是scroview,不要担心优化问题,因为scroview里面的TextView是动态生成的,完全不用担心优化问题,右侧是viewPager,Scroview可以控制viewPager的滑动,反之ViewPager也可以控制scroview的滑动. 闲话少说,直接上代码:
-
Android使用AIDL实现两个App间通信
今天开发了一个功能,通过Android的AIDL机制完成两个app间的通信.功能需求很简单,一个客户端app,叫做client,一个服务端app叫orderManager:客户端负责展示订单列表,并且可以向服务端添加订单:服务端负责管理订单,可以对外提供订单信息. 闲言少叙,下面直接上代码. 1.编写bean类. 首先在client中定义OrderBean类,字段很简单,注意需要实现Parcelable接口: package com.example.wang.client.bean; impor
-
如何在Android App中集成支付宝和微信支付功能
前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介绍吧. 集成支付宝支付 没想到现在 App 里集成支付宝是这么的简单,我还折腾了好久- 好了,开始,假设你已经完成了支付宝那些繁杂的申请啥的工作,进入开发了. 首先,去下载官方的 DEMO : App支付客户端DEMO&SDK. 导入开发资源 解压后把里面的 jar 包拿出来放到你工程的 lib 目
-
Android控件实现直播App特效之点赞飘心动画
现在市面上直播类的应用可以说是一抓一大把,随随便便就以什么主题来开发个直播App,说白了就想在这领域分杯羹.在使用这些应用过程中其实不难发现,在所有的直播界面,少不了的就是各种打赏.各种点赞.今天自己就针对点赞功能敲了一下,代码不多,主要是涉及到动画运动轨迹运算,这里需借助 贝塞尔曲线 相关知识,我使用三阶贝塞尔曲线来实现轨迹动画. 运行效果 一.具体实现流程 仔细分析整个点赞过程可以发现,首先是"爱心"的出现动画,然后是"爱心"以类似气泡的形式向上运动. &quo
-
Android AIDL实现两个APP间的跨进程通信实例
本文为大家分享了Android AIDL实现两个APP间的跨进程通信实例,供大家参考,具体内容如下 1 Service端创建 首先需要创建一个Android工程然后创建AIDL文件,创建AIDL文件主要为了生成继承了Binder的Stub类,以便应用Binder进行进程间通信 servier端结构如下 AIDL代码如下 // IBookManager.aidl package com.example.bookserver.aidl; // Declare any non-default type
-
Android 如何使用短信链接打开APP
短信链接跳转APP 平时我们会收到广告短信,比如某东,某宝,里面附加着链接,当你点开链接(手机自带的浏览器),发现浏览器打开后,等一下下,就会打开对应的APP,直接到广告相应的页面. Android端的代码 从简单的开始,第一个启动的Activity先来处理 <activity android:name=".activity.ActivityFirst"> <intent-filter> <action android:name="android
-
详解Android运行时权限及APP适配方法
Android 6.0起,Android加强了权限管理,引入运行时权限概念.对于: 1. Android 5.1(API 22)及以前版本,应用权限必须声明在AndroidManifest.xml中,应用在安装时,Android会列出其所需的所有权限供用户确认安装. 2. Android 6.0(API 23)及以后版本,应用权限必须声明在AndroidManifest.xml中,但权限分为普通权限(Normal Permissions)和危险权限(Dangerous Permissions),
-
Android实战APP启动速度优化
APP启动速度非常重要,APP启动速度慢,可能会造成用户体验不良好,尤其是在最近用Android studio之后,如果长时间不打开app,启动速度就会特别的慢,下面我们一起探讨一下影响app启动速度的原因,以及解决方案. 检测启动时间 首先我们要知道app的启动时间,然后你也可以凭着感觉来,这里我教大家一个装逼的方法: adb shell am start -W [packageName]/[.MainActivity] 用adb命令可以检测启动时间,示例如下: ./adb shell am
-
Android APP性能优化分析
本文通过Android APP性能优化的四个方面做了详细分析,并对原理和重点做了详细解释,以下是全部内容: 说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用.相信每个使用 Android 系统的用户都有过以上类似经历,确实,Android
-
Android 分析实现性能优化之启动速度优化
目录 启动方式 冷启动(启动优化目标) 热启动 温启动 启动流程中可优化的环节 检测工具 启动时间检测 Logcat Displayed adb 命令统计 CPU profile API level >= 26 API level < 26 StrictMode 严苛模式 优化点 黑白屏问题 本文主要探讨以下几个问题: 启动方式 启动流程中可优化的环节 检测工具 优化点 黑白屏问题 启动方式 应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动.温启动与热启动 冷启动(启动优化
-
Android APP启动时间优化介绍
APP启动时间优化首先要知道入伙获取APP启动时间,可以看我的这篇文章:Android 获取APP启动时间 然后就是想办法降低启动时间 1.在Application的onCreate方法中将耗时信息生成一个文件 2.正常耗时文件需要申请读写权限 3.运行APP,可以找到生成的文件 3.将生成的文件直接拖到Android Studio中,可以显示分析的页面 4.分析找到耗时严重的方法 5.将耗时严重的方法放到线程池的线程里面异步执行 6.异步加载资源的时候要注意下面几点: 如果我们要加载的资源耗时
-
Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)
Android实战打飞机游戏子弹生成,新建子弹类 public class Bullet { // 子弹图片资源 public Bitmap bmpBullet; // 子弹的坐标 public int bulletX, bulletY; // 子弹的速度 public int speed; // 子弹的种类以及常量 public int bulletType; // 主角的 public static final int BULLET_PLAYER = -1; // 鸭子的 public st
-
Android ListView介绍及优化方案
xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft=&
-
Android中利用ViewHolder优化自定义Adapter的写法(必看)
最近写Adapter写得多了,慢慢就熟悉了. 用ViewHolder,主要是进行一些性能优化,减少一些不必要的重复操作.(WXD同学教我的.) 具体不分析了,直接上一份代码吧: public class MarkerItemAdapter extends BaseAdapter { private Context mContext = null; private List<MarkerItem> mMarkerData = null; public MarkerItemAdapter(Cont
-
详解Android内存泄露及优化方案一
目录 一.常见的内存泄露应用场景? 1.单例的不恰当使用 2.静态变量导致内存泄露 3.非静态内部类导致内存泄露 4.未取消注册或回调导致内存泄露 5.定时器Timer 和 TimerTask 导致内存泄露 6.集合中的对象未清理造成内存泄露 7.资源未关闭或释放导致内存泄露 8.动画造成内存泄露 9.WebView 造成内存泄露 总结 一.常见的内存泄露应用场景? 1.单例的不恰当使用 单例是我们开发中最常见和使用最频繁的设计模式之一,所以如果使用不当就会导致内存泄露.因为单例的静态特性使得它
-
Android 进阶实现性能优化之OOM与Leakcanary详解原理
目录 Android内存泄漏常见场景以及解决方案 资源性对象未关闭 注册对象未注销 类的静态变量持有大数据 单例造成的内存泄漏 非静态内部类的静态实例 Handler临时性内存泄漏 容器中的对象没清理造成的内存泄漏 WebView 使用ListView时造成的内存泄漏 Leakcanary leakcanary 导入 leakcanary 是如何安装的 leakcanary 如何监听Activity.Fragment销毁 RefWatcher 核心原理 流程图 本文主要探讨以下几个问题: And
-
详解Android内存泄露及优化方案
目录 一.常见的内存泄露应用场景? 1.单例的不恰当使用 2.静态变量导致内存泄露 3.非静态内部类导致内存泄露 4.未取消注册或回调导致内存泄露 5.定时器Timer 和 TimerTask 导致内存泄露 6.集合中的对象未清理造成内存泄露 7.资源未关闭或释放导致内存泄露 8.动画造成内存泄露 9.WebView 造成内存泄露 总结 一.常见的内存泄露应用场景? 1.单例的不恰当使用 单例是我们开发中最常见和使用最频繁的设计模式之一,所以如果使用不当就会导致内存泄露.因为单例的静态特性使得它
随机推荐
- 一次真实的DDoS攻击防御实战
- AngularJs Using $location详解及示例代码
- JS模态窗口返回值兼容问题的完美解决方法
- 使用 Iisftp.vbs 创建FTP站点的方法
- PHP+jQuery实现滚屏无刷新动态加载数据功能详解
- zabbix v3.0安装部署全过程详解
- 浅谈java的byte数组的不同写法
- .net core 1.0 实现单点登录负载多服务器
- 163的邮件用phpmailer发送(实例详解)
- android中ListView多次刷新重复执行getView的解决方法
- PHP Cookei记录用户历史浏览信息的代码
- php实现两个数组相加的方法
- nginx中使用lua脚本的方法
- 如何在SQL SERVER 2005存储过程中,使用循环语句
- jQuery中的编程范式详解
- javascript下判断一个对象是否具有指定名称的属性的的代码
- JavaScript结合AJAX_stream实现流式显示
- Content-Location文件头定义方法(防止内部IP地址泄漏二法)
- ArrayList详解和使用示例_动力节点Java学院整理
- 数组与List之间相互转换的方法详解