程序之美
进程和线程
当应用组件启动且该应用未运行任何其他组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件会在相同的进程和线程(称为“主”线程)中运行。如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。
服务
Service 作为 Android 四大组件之一,在Android系统中有着非常重要的作用,Service 设计的初衷就是为在后台长时间执行而不需要提供页面的任务。
服务在Android系统中主要发挥以下作用:
1.保证一个长期在后台运行并且不与用户交互的操作;
2.为其他应用程序提供服务。
Service的启动有两种方式:context.startService() 和 context.bindService()
Service分为本地服务(LocalService)和远程服务(RemoteService):
1、本地服务依附在主进程上而不是独立的进程,它节约了资源并且不需要IPC,也不需要AIDL通信。主进程被杀死后,服务便会终止。
2、远程服务为独立的进程,在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响。因其为独立的进程,会占用一定资源,可采用AIDL通信。
保活机制
下面说