Android_浅谈

来源:互联网 发布:回收站数据恢复 免费 编辑:程序博客网 时间:2024/06/04 18:39

<基本架构>

Android底层建立在Linux系统上。

应用程序层、应用程序框架层、函数库和Android运行时、Linux内核层。






















Android运行时:Android核心库集和Dalvik虚拟机。

1、每个Android应用程序都运行在单独的Dalvik虚拟机内(即每个Android应用程序对应一条Davlik进程)。
2、JVM虚拟机运行的是Java字节码(.class文件),但Dalvik运行的是专有的dex(Dalvik Executable)文件。
3、Dalvik基于寄存器实现。大多数虚拟机(包括JVM)都是基于栈的,基于寄存器的虚拟机具有更好的性能表现,但在硬件通用性上略差。

<APK包生成>

1、DX工具对*.class文件进行转换。得到*.dex文件
2、AAPT工具打包所有的资源文件。打包后通常得到*.ap_文件
3、apkbuilder工具前两步得到的文件打包成APK包

<Dalvik和ART>

Dalvik:是Google公司自己设计用于Android平台的Java虚拟机。支持已转换为.dex格式的Java应用程序运行。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
ART:代表Android Runtime,其处理应用程序执行的方式完全不同与Dalvik,Dalvik是依靠一个

Just-In-Time(JIT)编译器去解释字节码。开发者编译后的程序需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同硬件和架构上运行。ART完全改变做法,在应用安装时就预编译字节码到机器语言,这一机制叫Ahead-Of-Time(AOT)编译。

ART优点
系统性能的显著提升
应用启动更快、运行更快、体验更流畅、触感反馈更及时
更长的电池续航能力
支持更低的硬件
ART缺点
更大的存储空间占用,可能增加10%-20%
更长的应用安装时间

对比项目   CPU RAM内存ROM内存 流畅度     省电  APP加载速度兼容性
ART模式    --  小     大 更佳     更佳    慢               有待优化
Dalvik模式  --  大    小 普通    普通    快                  好

<ANR(Application Not Responding)>

ANR发生的条件:应用程序主线程响应超时才会产生ANR,因为只有主线程需要和用户交互,子线程的阻塞和缓慢只要不影响到主线程就不会引发ANR。超时时间和输入事件或特定操作是主线程响应超时的两个必要条件。

ANR引发原因:
系统原因:Kernel、Framework、驱动
应用原因:死锁、阻塞、死循环、低性能
如何避免ANR:
应用原因应当在程序开发中注意避免将耗时操作放在主线程,耗时操作包含:
数据库操作。数据库操作尽量使用异步方法做处理,Monkey测试中IOWait可能会很高,此时一个简单的数据库查询操作都可能需要很长时间返回。
初始化的数据和控件太多。可以用布局查看工具HierarchyViewer来优化UI设计,避免深层嵌套。
频繁的创建线程或者其它大对象。
加载过大数据和图片。
对大数据排序和循环操作。
滥用广播。
大对象的传递和共享。
访问网络。
锁住主线程。

原创粉丝点击