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!
以上只是个人理解,如有不对之处,敬请指正!
分享到:
相关推荐
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); return true; } return super.onKeyDown(keyCode, event); } ``` 然而,这种方法在...
当应用启动时,系统会为它创建一个进程,如果应用包含多个组件(如Activity、Service等),这些组件默认都在同一个进程中运行。进程的生命周期与应用的组件紧密相关,当所有组件都停止活动时,系统可能会回收该进程...
A process can leak resources such as process memory, pool memory, user and GDI objects, handles, threads, and so on. Memory Concepts (X86 Address Space) Per Process Address Space Every process ...
- **Affinity(吸引力)和新任务(New Task):** Affinity决定了Activity加入哪个任务(Task),而新任务则创建一个新的任务来容纳Activity。 - **加载模式(Launch Mode):** 定义了Activity如何加载到任务栈中。 - **清理...
- **Intent**:Intent用来传递信息或者启动Activity、Service等组件。 #### 应用程序组件 - Components of an Application Android应用程序是由多个组件构成的,每个组件都有特定的功能。 - **Activity**:用户...
在`restartApp()`方法中,我们通过获取应用的启动Intent并添加适当的标志(`FLAG_ACTIVITY_NEW_TASK`和`FLAG_ACTIVITY_CLEAR_TASK`),来启动一个新的任务栈并清除所有现有的任务,从而实现应用的重启。 需要注意的...
任务(Task)是一系列按堆栈顺序排列的Activity,反映了用户的操作历史。任务管理遵循“后进先出”原则,新的Activity压入栈顶,用户回退则从栈顶弹出最近的Activity。 3. **Thread & Process**: 在Android中,...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent); } }, delay); } } ``` 在`Application`的`onCreate`方法中注册这个全局异常处理器: `...
An isolation level determines the degree to which data is isolated for use by one process and guarded against interference from other processes. Prior to SQL Server 7.0, REPEATABLE READ and ...
4. **Activity管理**:维护Activity的生命周期,处理任务回退栈,比如使用`FLAG_ACTIVITY_NEW_TASK`启动新的任务。 5. **权限管理**:检查和申请必要的系统权限,如读写权限、网络权限等。 6. **服务管理**:启动、...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); // 或者简单地结束应用 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } ``` 5. **在子线程中捕获...
3. **进程**(Process):进程是操作系统分配资源的基本单位,每个Android应用运行在自己的进程中,除非特别指定,否则默认一个.apk的所有组件(Activity、Service、BroadcastReceiver、ContentProvider)都在同一...
2.7 ANR starting an Activity(运行一个活动,但是应用无相应) 2.8 ANR recriving a broadcast Intent(接收一个广播意图,但是应用无响应) 2.9 ANR staring a Service(运行一个服务,但是应用无响应) 2.10 System ...
通过ActivityManager,开发者可以获取到正在运行的活动(Activity)、服务(Service)以及它们的状态信息,这是实现任务管理功能的基础。 2. **进程和线程管理**: 在Android中,每个应用程序都运行在一个独立的进程...