Service服务
没有界面,后台运行,后台执行耗时任务(子线程),播放音乐,下载,IPC
start方式服务(播放音乐,下载)
startService(Intent intetn)
1.继承Service重新onBind,onStartCommand(Intent i,int flag,int startId)
2.继承IntentService,onHandleIntent(Intent intent)实现线程(工作线程)
不用new子线程,操作执行完毕自动关闭Service
int onStartCommand(Intent intent, int flags, int startId)方法
参数flags默认情况下是0,对应的常量名为START_STICKY_COMPATIBILITY。当Service因为内存 不足而被系统kill后,接下来未来的某个时间内,当系统内存足够可用的情况下,系统将会尝 试重新创建此Service,但不保证服务被Kill后一定能重启。
参数startId是一个唯一的整型,用于表示Activity(客户端)执行startService(...)的请求请 求标识,在多次startService(...)的情况下,呈现0,1,2....递增。
返回值具体的可选值及含义如下:(常见面试题)
START_NOT_STICKY(非粘性):当Service因为内存不足而被系统kill后,接下来未来的某个时间 内,即使系统内存足够可用,系统也不会尝试重新创建此Service。除非程序中Activity(客户 端)明确再次调用startService(...)启动此Service。
START_STICKY:当Service因为内存不足而被系统kill后,接下来未来的某个时间内,当系统内 存足够可用的情况下,系统将会尝试重新创建此Service,一旦创建成功后将回调 onStartCommand(...)方法,但其中的Intent将是null,pendingintent除外。
START_REDELIVER_INTENT:与START_STICKY唯一不同的是,回调onStartCommand(...)方法时, 其中的Intent将是非空,将是最后一次调用startService(...)中的intent。
bound方式服务(IPC)淘宝--支付宝 MyApp--Phone
1.继承Binder类(用于进程内部)
2.Messenger
3.AIDL(不同进程之间进行通信)
Service生命周期(start bound)