1.服务有两种:start (需要实现onStartCommand()回调), bind(需要实现onBind()回调),可以同时start和bind
服务在其托管进程的主线程中运行,
2.intent service:只需实现 onHandleIntent()
来完成客户端提供的工作即可
3.onStartCommand()
返回的值必须是以下常量之一:START_NOT_STICKY;START_STICKY;START_REDELIVER_INTENT
4. 如果服务亦未提供绑定,则使用 startService()
传递的 Intent 是应用组件与服务之间唯一的通信模式。但是,如果您希望服务返回结果,则启动服务的客户端可以为广播创建一个 PendingIntent
(使用 getBroadcast()
),并通过启动服务的 Intent
传递给服务。然后,服务就可以使用广播传递结果。
5.停止服务:stopSeft()直接停止服务;stopSeft(int)停止onStartCommand 的id相应的,如果ID不匹配,则不停止服务
6.服务与客户端之间的这个接口必须是 IBinder
的实现,并且服务必须从 onBind()
回调方法返回它。一旦客户端收到 IBinder
,即可开始通过该接口与服务进行交互
7. 前台服务必须为状态栏提供通知,放在“正在进行”标题下方,这意味着除非服务停止或从前台移除,否则不能清除通知
8.调用 startForeground()
。此方法采用两个参数:唯一标识通知的整型数和状态栏的Notification