技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Android开发
    应用除了有内存占用、内存泄露、内存抖动等看不见的性能问题外,还有很多看得见的性能问题,比如进入界面慢、点击反应慢、页面卡顿等等,这些看得见的体验问题会严重影响用户使用APP心情,但用户的情绪又无法通过异常采集、数据分析来发现,尽早优化APP的性能体验问题非常重要,会在一定程度上提升用户的留存率。
    为了程序能够编译通过和在设备中正常运行,主工程除了依赖第三方的工程和jar包之外,还需要依赖安卓系统本身的代码,也就是我们在sdk的每个版本中看到的android.jar,这里面集成了android的所有API,随着android sdk的升级,高版本的sdk中会增加很多新的API,比如ActionBar、Fragment、RecyclerView等,如果在低版本的sdk中需要使用高版本新增的API怎么办?不可能去更新移动设备中的android.jar吧,因为硬件设备集成的sdk版本是固定的,android.jar也是固定的,设备中的一些参数、硬件选型也是根据当前sdk版本来定的,所以最好的方式是将新增的API以依赖包的形式集成到需要使用高版本API的应用程序中。
    最近在做一个Android夜间模式的功能,又重新研究了一下Theme机制。贯彻我的风格,以解决问题为目标,写了个小Demo,简单了实现了切换夜间模式,为大家讲解。
      网上有很多大拿分享的关于Android性能优化的文章,主要是通过各种工具分析,使用合理的技巧优化APP的体验,提升APP的流畅度,但关于内存优化的文章很少有看到。在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮、背景、动画变换基本上全是图片,在2K屏上(分辨率2048*1536)一张背景图片就会占用内存12M,来回切换几次内存占用就会增涨到上百兆,为了在不影响APP的视觉效果的前提下,有必要通过各种手段来降低APP对内存的消耗,下面是我在实践过程中使用的一些方法,很多都是不太成熟的项目,也不够深入,只是将其作为一种处理方式分享给大家。
    Android性能测试工具列表。
    Android系统启动概述 Android系统开机流程基于Linux系统,总体可Android系统开机流程基于Linux系统,总体可分为三个阶段: 1、Boot Loader引导程序启动; 2、Linux内核启动; 3、Android系统启动,Launcher/app启动;
    AIDL是什么 AIDL英文全称Android Interface DefiniAIDL英文全称Android Interface Definition Language,中文Android接口定义语言,在Android中,AIDL定义了程序访问接口,并将对象进行序列化,通过该接口,使得进程间采用IPC(进程间通信机制,比如binder)进行交互、传输数据。
    如果用户在当前页面下载了应用,安装之后直接跳转到刚才浏览的界面,不仅可以将这一部分流量引回客户端,还可以让用户获得完整的用户体验。下面提出一种方案来满足这个业务需求。
    可执行链接格式(Executable and Linking Format)最初是由 UNIX 系统实验室(UNIX System Laboratories,USL)开发并发布的,作为应用程序二进制接口(Application Binary Interface,ABI)的一部分。工具接口标准(Tool Interface Standards,TIS)委员会将还在发展的 ELF 标准选作为一种可移植的目标文件格式,可以在 32 位 Intel 体系结构上的很多操作系统中使用。
    首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压。可以看到里面有一个META-INF文件夹,里面就是签名验证的文件。有三个文件MANIFEST.MF、CERT.SF、CERT.RSA分别保存着不同的签名信息,下面一个一个来分析.。。。
    安卓第三方应用调起常见问题。
    JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。默认情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行判断。
    下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的。 Data Serialization,默认使用的是Java Serialization,这个程序员最熟悉,但是性能、空间表现都比较差。还有一个选项是Kryo Serialization,更快,压缩率也更高,但是并非支持任意类的序列化。 Memory Tuning,Java对象会占用原始数据2~5倍甚至更多的空间。最好的检测对象内存消耗的办法就是创建RDD,然后放到cache里面去,然后在UI上面看storage的变化;当然也可以使用SizeEstimator来估算。使用-XX:+UseCompressedOops选项可以压缩指针(8字节变成4字节)。在调用collect等等API的时候也要小心——大块数据往内存拷贝的时候心里要清楚。
     数据库连接池是为了解决数据库对象的共享出错问题,实际就是建立一个缓冲池,预先在缓冲池中放入一定数量的数据库连接,当需要建立数据库连接时,只需要从连接池中取出一个,而不是再次新建一个数据库连接,使用完毕以后再将数据库连接放入连接池。 现在常用的开源数据库连接池有c3p0、dbcp、proxool三种,其中:spring框架推荐使用dbcp,hibernate框架推荐使用c3p0和proxool。
    给产品经理讲技术之网页与原生App如何交互。
    常常被人问及微信中使用的X5内核的问题,其实我也不是很清楚,只知道它是基于android 4.2的webkit,版本号是webkit 534。今天正好从X5团队拿到了一份问题汇总,梳理下发出来,给各位开发者以参考——不排除明天会删除这篇文章的可能。
    对Android网络抓包分析,一般是使用tcpdump抓个文件,再到PC用Wireshark打开分析。能不能达到直接使用Wireshark的效果? 答案是可以的,至少已经非常接近了。实现起来很简单,原理就是将tcpdump的数据重定向到网络端口,再通过管道(pipe)转到wireshark就可以了。
    这篇文章的主要目的是为移动Canvas游戏的开发者如何针对Android UC浏览器加速版进行渲染性能优化提供指导,不过文中的大部分内容也适用于Android平台其它支持硬件加速2D Canvas的浏览器,比如Chrome for Android(Chrome也已经正式成为Android 4.4的系统内置浏览器)。另外,这篇文章的内容主要是针对渲染性能优化,而不是JavaScript性能优化,不过因为Android UC浏览器使用的是V8引擎,所以您应该很容易找到很多如何针对V8优化JavaScript性能的文章。
    最近一年做的产品都跟ROM有关,所以对于ROM目前的生态状况,稍稍戏说一下。
    在近两年里,Android整个生态系统的进步对Android虚拟机的需求,目前的Dalvik虚拟机的开发已经无法满足了。Dalvik最初设计时,处理器的性能很弱,移动设备的内存空间非常有限,而且都是32位的系统。于是Google开始构建一个新的虚拟机来更好的面对未来的发展趋势。这种虚拟机的性能能够在目前的多核处理器,甚至未来的8核处理上轻松扩展,能够满足对大容量存储的支持,以及大容量内存的支持。 于是乎,ART出现了。
[ 共55篇文章 ][ 第2页/共3页 ][ 1 ][ 2 ][ 3 ]
赞助商广告
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1