·Service表示“服务”。·Service是Android系统的核心组件之一。Service本质是一个继承了android.app.Service的Java类
注意
·Service没有匹配的用户界面,通常用于后台处理耗时操作。·Service是运行在主线程中的;尽管Service被定位为“用于处理耗时操作”,但是各种耗时操作需要在Service中另外开辟线程来完成。
-Service由Android系统进行维护。 -每一个Service都应该在AndroidManifest.xml文件中进行注册;
优先级高于Activity
·组件可以绑定到Service,实现进程间通信(IPC:Inter Process Communication)
进程优先级
·Android系统力图维护尽可能多的进程,但由于设备性能有限,在动态管理内存的过程中,
Android系统会经常终止一些优先级低的进程,以释放资源,保证优先级高的进程正常运行。
1.前台进程(Foreground Process)
(1)存在正在与用户交互的Activity;
(2)存在Service,且该Service绑定在与用户交互的Activity之上;
(3)存在运行在前台色Service,即该Service的startForeground()被调用
(4)存在正在执行核心生命周期方法的Service。包括:onCreate(),onSrart()
,onSrartCommandr();onDestroy();
(5)存在正在接收广播的广播接收者。
2.可见进程(Visible Process)
并无前台组件,但包含用户可见的组件,例如:
(1)处于暂停态的Activity
(2)存在绑定在可见Activity之上的Service
3.服务进程(Service Process)
(1)使用startService()方式启动的Service,但该Service并未上升到“前台”,“可见
”的级别
4.后台进程(Background Process)
大多表现为onStop()之后的Activity等
5.空进程(Empty Process)
不包含任何活动的组件的进程,为了便于缓存组件,以提高下次启动的效率,系统可能暂时保留
它们
注意:包含Service的进程只在前三种
用途
播放音乐,记录地理信息位置的改变,监听某种动作
分类
1.本地服务(Local service)
应用程序内部
startService 对应的停止方法stopService stopSelf stopResult
bindService 对应的停止方法 unbindService
2远程服务(Remote service)
Android 系统内部的应用程序之间
定义IBinder接口
Start方式特点:
服务跟启动源没有任何联系
无法得到服务对象
Bind方式特点
通过IBinder接口实例,返回一个ServiceConnection对象给启动源
通过ServiceConnection对象的相关方法可以得到Service对象
所以注意:
使用Bind方法绑定服务,只有绑定之后才能解绑定,且Bind之后,退出程序之前必须解绑定才能退出不然会报错,因为它与启动源有关