Activity, Service,Task, Process and Thread之间到底是什么关系呢?
首先我们来看下Task的定义,Google是这样定义Task的:a task is what the user
experiences as an "application." It's a group of related activities, arranged
in a stack. A task is a stack of activities, not a class or an element in the manifest file. 这意思就是说Task实际上是一个Activity栈,通常用户感受的一个Application就是一个Task。从这个定义来看,Task跟Service或者其他Components是没有任何联系的,它只是针对Activity而言的。
而Service和Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver。
通常情况下,对于一个应用程序的所有的Components都会在同一个Process产生的Main Thread中运行。但是我们也可以让不同的Component运行在不同的Process当中,我们可以通过设置这些Components的属性来使其运行在不同的Process当中,例如:<activity android: process = "processA">。当然我们也可以设置使他们运行在同一个Process当中,即使他们不在同一个应用程序当中也可以(前提是这些应用程序使用的是同一个Linux User ID,并且被同一个机构签名)。
那么Thread跟这些Components又有什么关系呢?
通常我们会将一些长时间或大计算量的操作用一个单独的线程来运行,以防止类似操作阻塞Process。比如我们可以为一个Service(如播放音乐的Service)产生一个Thread,我们也可以为Methods来产生一个线程。总之当你不想让某些操作阻塞Main Thread的时候,create a thread!
以上只是个人理解,如有不对之处,敬请指正!
分享到:
相关推荐
Activity,回退栈,Task之间的关系
Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity
这个是我在网上看到一篇文章,作者给出了activity和service交互的代码,但是还是很多人找作者要,我觉得有代码很好,写写增加记忆,这里有吧我写的拿出来与大家分享下!!
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
实现service与activity之间的通信功能,一个小demo。
android_的Activity和Service之间的通信
Boot process and Manage of the Activity_201408261721.pdf
android,启动service,并且service把值传给Activity显示
Activity开启,绑定,解绑,关闭Service。Kotlin版本。适合初学者
四大组件 Activity Service content provider broadcast receiver
Service向Activity传值,实现Count累加的效果。定时传值
Activity和Service生命周期及使用AIDL通信
具体介绍了Android中的Activity和Service。
ActivityManagerService相关流程分析。全面详细的分析了ActivityManagerService相关的过程。
Android2.3 ActivityManagerService流程分析
service在后台下载,与前台多个activity通信,结果发现有一个坑,找到原因后,跟大家一起分享。
一个很完整的activity和service的相互交互例子
4. 掌握Activity的启动模式,和启动模式所对应的Activity和task的关系 内容: 1、设计如下界面,包括四个按钮,两个文本框。单击对应按钮可以启动对应activity。假 定Activity A为启动Activity。 2、修改 Activity ...
详解三大组件的综合使用,广播的静态注册与动态注册,如何结合Service使用广播等
service传递数据给activity的demo