基本架构

Android底层建立在Linux系统上。

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

android-浅谈_第1张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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设计,避免深层嵌套。
频繁的创建线程或者其它大对象。
加载过大数据和图片。
对大数据排序和循环操作。
滥用广播。
大对象的传递和共享。
访问网络。
锁住主线程。

更多相关文章

  1. Android应用程序目录结构分析
  2. Android应用程序开发的五大概念
  3. Android应用程序内存分析-Memory Analysis for Android Applicat
  4. Android,UI主线程与子线程
  5. 面试例题1:如何在android应用程序的窗口上绘制图形
  6. 用Eclipse开发第一个Android应用程序HelloWorld

随机推荐

  1. FloatingActionButton
  2. The method Inflate() in android
  3. Android HAL实例解析
  4. Android基础篇——创建一个Android工程
  5. Android监控软键盘变化实例
  6. 【Android】【绘图】绘制波浪线动画
  7. WPF UI组件学习(一) - Window的外观实现
  8. android 判断APP是否第一次打开
  9. android两款gridview美化
  10. Android中dp、sp、px、pt之间的换算关系