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设计,避免深层嵌套。
频繁的创建线程或者其它大对象。
加载过大数据和图片。
对大数据排序和循环操作。
滥用广播。
大对象的传递和共享。
访问网络。
锁住主线程。
- Android_浅谈
- Android_浅谈mvp开发模式
- android_对话框
- Android_标题栏
- android_单元测试
- Android_多媒体
- android_测试
- android_混淆
- android_介绍
- android_动画
- android_退出
- android_天气预报
- android_一键锁屏
- Android_异常
- android_线程
- android_拷贝
- Android_广播
- android_蓝牙
- 第4章 虚拟机性能监控与故障处理工具
- JDBC
- CentOS7.3搭建dhcp服务器
- python的I/O操作
- 匿名内部类的创建原理
- Android_浅谈
- 【Web】vue2.0音乐APP实战中的知识点总结(二)
- linux
- unity_每日随笔_MyButton
- Crash 现场分析
- mybatis3中@SelectProvider的使用技巧
- 蓝牙知识【协议栈简图】 【 UUID解析 】 【属性、Characteris、描述符和Service以及profile的关系】【蓝牙无线通道】【缩写词】
- nginx之php,及在lnmp环境下的论坛
- E-POJ-3087 Shuffle'm Up