Android学习笔记之进程(Processes)和任务(tasks)

进程(Processes)和任务(tasks)

所有的对象都需要内存和一个虚拟机来存活。一个process就是OS为了你的应用程序存活而开辟的空间,它也是用来让你的应用程序运行起来的必要条件。

进程可能拥有资源文件,这些资源文件都由OS像管理内存一样来管理。也可能拥有网络socket或者可以打开的文件。

进程也必须包含至少一个运行线程。在Android上,你的进程肯定会包含一个在运行的Dalvik 虚拟机 。

然而有一些隐藏的例外情况,一般来说每一个应用程序组件都会与一个进程相连。你的应用程序被自己的进程创建,这是在应用中所有的组件默认的运行方式。但你也可以安排单一某一个组件到另一个进程中,但是我们推荐使用默认运行方式。如果你需要一些组件运行在另一个进程,你可以使用多线程来达到相同目的。这种方式比使用多进程更简单明了。

每一个activity的实例都存活在一个确定的进程和一个确定的任务(task)中,这是唯一的相似之处。task只包含若干个activity,经常包含来自不同应用程序的activity。然而,进程包含所有应用程序的运行代码和对象。

进程和task比较容易弄混,因为他们两者在功能上有重叠的部分,它们两个都是根据应用程序的名字来引用。例如,在书中的例子中当从NerdLauncher中启动CriminalIntent,操作系统会创建一个CriminalIntent进程和一个新的task。在任务管理器中,这个task是被标签为CriminalIntent的。

一个activity存活的task可能跟它存活的进程是不同的。当你从CriminalIntent启动联系人应用程序来选择一个人名。这样便进入了CriminalIntent的task。然而,它是运行在联系人应用程序的进程中的。

也就是说当你按下手机的返回键来在不同activity之间导航,切换到哪个进程是不知道的。

可以创建不同的task,也可以在之间切换,但是killing tasks或者替换掉Android默认的taks管理器是不可能的。当你长按Home键,会出现默认的taks管理器,然而tasks是不能杀死的。相反的,进程(process)是可以杀死的,所以那些声明自己可以杀死任务的应用其实是杀死了进程而已。

时间: 2024-12-15 01:57:52

Android学习笔记之进程(Processes)和任务(tasks)的相关文章

【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见Pro Android学习笔记(六四):安全和权限(1):签发apk,我们将对package做进一步了解. 每个apk都有一个唯一的根包名,在AndroidManifest.xml中定义,如下.开发者为包进行签发,前面和包名绑定,其他开发者不能对这个包进行更新. <?xml version="1

Pro Android学习笔记(十二):了解Intent(下)

解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键就是component 名字,在<intent-fliter>中声明的其他属性被忽略.对于implicit intent,则根据action,category和data来进行匹配.然而一个intent fliter中可以声明多个actions,多个categories,多个data属性,因此可以满

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在

Linux System Programming 学习笔记(五) 进程管理

1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity inside of a process the virtualization of memory is associated with the process, the threads all share the same memory address space 2. pid The idle pro

udacity android学习笔记: lesson 3

udacity android学习笔记: lesson 3 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/an

Android学习笔记(五三):服务Service(下)- Remote Service

之前所谈的Service属于Local Service,即Service和Client在同一进程内(即同一application内),Service的生命周期服从进程的生命周期.在实际应用上,有时希望Service作为后台服务,不仅被同一进程内的activity使用,也可被其他进程所使用,针对这种情况,需要采用bindService,也就是Remote Service的方式. 在Android中,不同app属不同进程(process),进程是安全策略的边界,一个进程不能访问其他进程的存储(例如采

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

Android学习笔记之mainfest文件中android属性

Android学习笔记之mainfest文件中android属性 - Impossible is nothing - 博客频道 - CSDN.NET 以前的零散笔记, 共享一下, 有错误的地方还请指正. android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务.---------------------------------------------------------------------------------

Android学习笔记(一):基本概念

本文内容引用于<Android开发教程&笔记> Android的概念: Android是一个专门针对移动设备的软件及,它包括一个操作系统,中间件和一些重要的应用程序.Beta版的Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口. 特性 • 应用程序框架 支持组件的重用与替换• Dalvik 虚拟机 专为移动设备优化• 集成的浏览器 基于开源的 WebKit 引擎• 优化的图形库 包括定制的2D 图形库,3D 图形库基于