Application,Task和Process的区别与联系
来源:互联网 发布:网络攻击鱼叉 水坑 编辑:程序博客网 时间:2024/06/05 06:22
application翻译成中文时一般称为“应用”或“应用程序”,在android中,总体来说一个应用就是一组组件的集合。众所周知,android是在应用层组件化程度非常高的系统,android开发的第一课就是学习android的四大组件。当我们写完了多个组件,并且在manifest文件中注册了这些组件之后,把这些组件和组件使用到的资源打包成apk,我们就可以说完成了一个application。application和组件的关系可以在manifest文件中清晰地体现出来。如下所示:
这样的话这个activity会运行在一个独立的进程中。
<?xml version="1.0" encoding="utf-8"?> <manifest android:versionCode="1" android:versionName="1" xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.myapp"> <application android:label="@string/app_name"> <activity android:name=".MyActivity" android:label="@string/app_nam"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyReceiver"/> <provider android:name=".MyProvider"/> <service android:name=".MyService"/> </application> </manifest>
由此可见,application是由四大组件组成的。在app安装时,系统会读取manifest的信息,将所有的组件解析出来,以便在运行时对组件进行实例化和调度。
而task是在程序运行时,只针对activity的概念。说白了,task是一组相互关联的activity的集合,它是存在于framework层的一个概念,控制界面的跳转和返回。这个task存在于一个称为back stack的数据结构中,也就是说,framework是以栈的形式管理用户开启的activity。这个栈的基本行为是,当用户在多个activity之间跳转时,执行压栈操作,当用户按返回键时,执行出栈操作。举例来说,如果应用程序中存在A,B,C三个activity,当用户在Launcher或Home Screen点击应用程序图标时,启动主Activity A,接着A开启B,B开启C,这时栈中有三个Activity,并且这三个Activity默认在同一个任务(task)中,当用户按返回时,弹出C,栈中只剩A和B,再按返回键,弹出B,栈中只剩A,再继续按返回键,弹出A,任务被移除。如下图所示:
task是可以跨应用的,这正是task存在的一个重要原因。有的Activity,虽然不在同一个app中,但为了保持用户操作的连贯性,把他们放在同一个任务中。例如,在我们的应用中的一个Activity A中点击发送邮件,会启动邮件程序的一个Activity B来发送邮件,这两个activity是存在于不同app中的,但是被系统放在一个任务中,这样当发送完邮件后,用户按back键返回,可以返回到原来的Activity A中,这样就确保了用户体验。
说完了application和task,最后介绍process。process一般翻译成进程,进程是操作系统内核中的一个概念,表示直接受内核调度的执行单位。在应用程序的角度看,我们用java编写的应用程序,运行在dalvik虚拟机中,可以认为一个运行中的dalvik虚拟机实例占有一个进程,所以,在默认情况下,一个应用程序的所有组件运行在同一个进程中。但是这种情况也有例外,即,应用程序中的不同组件可以运行在不同的进程中。只需要在manifest中用process属性指定组件所运行的进程的名字。如下所示:
阅读全文
0 0
- Application,Task和Process的区别与联系
- Android Application,Task和Process的区别
- Activity四种启动模式和task、process、Application之间的区别
- Android app、process和task的区别
- Web Application 和 Web Service 的区别与联系
- Web Application 和 Web Service 的区别与联系
- Activity Stack ,Application和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack和Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Kitkat Activity、Task、Application和Process
- Android 中 Application,Task和Process 关系
- request,session,application的区别和联系
- VS环境下报错:检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
- django开启gzip压缩
- 使用linux系统加密
- 第一次给电脑安装CentOS7
- Android应用资源总结八: 自定义属性获取值的过程解惑
- Application,Task和Process的区别与联系
- DOM中常用的属性
- java类的反射
- Spark2.x学习笔记:13、Spark SQL快速入门
- Java奇淫巧技之Lombok
- 《TCP/IP详解卷一:协议》数据链路层(二)
- 10.12(周四)
- Linux共享库概述
- tableview 选中一行后,不显示选中颜色的方法 tableview 选中一行后,不显示选中颜色,不要将tableview的allowsSelection设置成NO,那样的话可能导致tablev