文档章节

一.移动应用的性能

阿元
 阿元
发布于 2017/04/28 16:30
字数 718
阅读 15
收藏 0

目标:把APP体验做到极致

1.颜值->UI设计 2.性能->2.1更短的等待时间 2.2更平滑的流畅体验 2.3更低的内存使用 2.4更少的电量消耗

1.性能指标

1.1内存

内存消耗-->导致异常崩溃。

1.2电量消耗

计算CPU周期,高效使用硬件等。

1.3初始化时间

合理利用懒加载

  • 检查应用是否首次启动
  • 检查用户是否登陆
  • 如果用户已经登录,竟可能载入之前离开时的状态
  • 连接服务器以更新最新的变更
  • 检查应用是否由某个深层链接唤起,如果是,还需要载入深层链接相应的UI和状态
  • 检查是否存在应用上次启动时挂起的任务,需要时恢复他们
  • 初始化后续需要使用的对象和线程池
  • 初始化依赖项(如对象关系映射,崩溃报告系统和缓存)

1.4执行速度&&响应速度

1.5本地存储

离线模式,并可主动清除数据

1.6互操作性

实现应用间的互操作性和数据共享:UIActivityViewController,深层链接,MultipeerConnectivity框架

1.7网络环境

  • 高带宽稳定网络
  • 低带宽稳定网络
  • 高带宽不稳定网络
  • 低带宽不稳定网络
  • 无网络

1.8带宽

根据不同带宽进行优化

1.9数据刷新

后台周期性刷新数据,在线聊天类应用.

1.10多用户支持

如果支持多个并发用户,参考一下准则

  • 添加新用户应尽可能高效。
  • 在不同用户之间更新应尽可能高效。
  • 在不同用户之间切换应尽可能高效。
  • 用户数据的界限应该简洁且没有BUG。

1.11单点登录

支持跨应用的数据共享,以及分享状态,跨应用同步

1.12安全

数据加密

1.13崩溃

崩溃报告,检测,分析

2.应用性能分析

2.1采样

以一定的周期间隔采集状态。

2.2埋点

通过修改代码,记录细节信息的埋点能够提供比采样更加精确的结果。

3.测量

3.1设置工程与代码

3.1.1构建与发布

确保能够轻松的构建和发布应用:CocoaPods依赖库

3.1.2可测试性

模拟数据(模拟真实环境的隔离环境)和真是数据上工作 单元测试:验证每个代码单元在隔离环境下的操作。 功能测试:验证组件在最终集成的安装包中的操作。

3.1.3可跟踪性

埋点。

3.2设置崩溃报告

移动数据统计平台崩溃报告系统如:友盟,BugTags,Flyrry

3.3对应用埋点

了解用户行为的重要步骤

3.4日志

CocoaLumberjack

© 著作权归作者所有

共有 人打赏支持
阿元
粉丝 5
博文 159
码字总数 105229
作品 0
浦东
程序员
关注移动Web应用性能问题(上)

移动平台逐渐成为客户端应用的主流载体之一,为了消除应用在不同移动平台的兼容性,采用Web形式开发移动应用成为潮流(当然特别依赖于原生功能和 性能的应用,如游戏可能例外)。随着Web移动...

墙头草
2011/04/02
0
0
云智慧透视宝对接AppCan 把脉App性能

  随着移动互联网的成熟和普及,网络随身美梦成真,基于移动互联网的生活服务,如移动购物、O2O、导航、即时社交等,在短短的几年里已经改变了我们的生活方式。无数看中移动互联网这块大蛋...

佚名
2015/09/09
0
0
OSC 第 131 期高手问答 -- 移动 APP 性能评测与优化

OSCHINA 本期高手问答(10 月 24 日 - 10 月 30 日) 我们请来了@hanahliao(廖海珍)为大家解答关于移动 APP 性能评测与优化方面的问题。 @hanahliao(廖海珍),南开大学计算机科学与技术专业...

局长
2016/10/24
2.9K
27
移动APP性能——如何保证高质量

Klaus Enzenhofer在Web性能优化和用户体验管理方面有多年经验及专业知识。他在dynaTrace软件公司的卓越团队中心担任技术战略专家。身居这一职位,他推进了dynaTrace APP性能管理解决方案和W...

糖糖豆豆
2014/10/11
0
0
阿里云移动数据分析服务使用教程

移动数据分析 (Mobile Analytics) 是阿里云推出的一款移动App数据统计分析产品,为开发者提供一站式数据化运营服务:通用的多维度用户行为分析、数据开放并支持自定义分析、数据无缝对接其他...

mcy0425
04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
56分钟前
1
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
2
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
1
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部