详细解读Android应用线程问题

移动开发 Android
本文主要讲述Android应用的问题,怎样运转Android应用,这些内容都是一些门户网站和技术论坛找到的,中间可能有不少错误是我没有挑出的,欢迎大家指正。

Android应用操作系统均采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分:低层以Linux核心工作为基础,只提供基本功能,下文仅供大家学习思考。

每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。

所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的Linux用户来运行,可以***程度的保护应用的安全和独立运行。

Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个 Android应用程序,Zygote就会FORK出一个子进程来执行该应用程序。这样做的好处显而易见:Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等等操作。

而在系统需要一个新的虚拟机实例时,Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开销。

Android应用程序包(APK)被发布到手机上后,运行前会对其中的DEX文件进行优化,优化后的文件被保存到缓存区域(优化后的格式被称为DEY),虚拟机会直接执行该文件。如果应用包文件不发生变化,DEY文件不会被重新生成。

Android应用开发和Dalvik虚拟机Android应用所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件)。而后通过工具软件DX把所有的字节码文件转成DEX文件(classes.dex)。

***使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。

【编辑推荐】

  1. Android应用程序组建原理深入剖析 
  2. Android SMS短信服务相关概念简述 
  3. PythonAndroid数据库相关代码解读 
  4. PythonAndroid安装卸载程序具体操作方法解析 
  5. Android应用程序的四个关键点 
责任编辑:chenqingxiang 来源: 博客园
相关推荐

2010-03-05 10:04:22

Android技术平台

2014-08-08 09:30:04

android scrollview

2010-03-10 19:25:04

python多线程

2010-02-24 13:25:22

Python线程应用程

2010-02-04 15:01:07

Android架构

2009-12-08 18:14:53

WCF Service

2009-10-14 16:56:11

屏蔽布线系统

2010-02-04 09:41:03

Android应用程序

2010-02-06 09:45:49

Android属性

2010-02-06 10:04:10

Android启动模式

2010-02-06 17:43:51

Android应用

2024-07-29 00:01:00

2016-05-12 15:21:32

IBM大型机LinuxONE

2009-12-28 15:00:21

ADO操作

2012-03-26 10:14:25

JavaJava 8

2022-08-26 07:33:49

内存JVMEntry

2009-12-07 15:34:18

PHP类的封装

2009-12-01 19:28:16

PHP模板

2018-07-16 15:05:43

Redis内存数据库
点赞
收藏

51CTO技术栈公众号