本人是参照 郭神的博客进行学习 贴上郭神博客的地址 http://blog.youkuaiyun.com/guolin_blog/article/details/11952435
作为一个Android基础不是很扎实的Android程序员,四大组件的学习是必不可少,废话不多说,看看我学到了什么吧。
Service:
服务,它主要是用来在后台处理一些比较耗时的操作,或者是执行一些需要长期运行的任务。甚至于在我们的程序退出的情况下,也可以继续运行,例如我们的手机音乐播放器。
基本用法:
启动:在Activity中通过 startService(new Intent(this, MyService.class))来进行启动,首次启动会调用MyService的onCreate()和onStartCommand()方法,非首次启动,只会不断的调用onStartCommand()方法。
停止:在Activity中通过 stopService(new Intent(this, MyService.class))来进行停止,会调用MyService的onDestroy()方法。
绑定:绑定指的是将Activity与Service进行绑定,这样Activity就可以命令Service做一些事情,而不是单纯的唤醒Service。
在Activity中通过 bindService(new Intent(this, MyService.class),connection,BIND_AUTO_CREATE)来进行绑定。
接下来对该方法里的参数逐一进行解释:
connection是ServiceConnection的一个对象,我们可以看到,在ServiceConnection里有两个方法,一个是绑定关联 之后执行的onServiceConnected()方法,这样可以在这里调用MyService里面的Binder的子类MyBinder的任何public方 法,这样就实现了Activity去命令Service做一些相关的操作。但是你不要就误以为onServiceDisconnected()方法就是在失 联之后调用的,这个方法只有在异常失联的情况下才回去调用,正常的unbind并不会调用该方法。
BIND_AUTO_CREATE:在直接bindService的情况下,先创建Service.
解绑:解绑指的是将Activity与Service进行解绑。在Activity当中通过unbindService(connection)来进行解绑操作。
生命周期:
1、startService - stopService
onCreate - onStartCommand - onDestroy
2、bindService - unbindService
onCreate - onDestroy
3、startService - bindService - unbindService/stopService - stopService/unbindService
onCreate - onStartCommand - onDestroy
PS:Service只有在停止工作的状态同时与任何Activity都没有关联的时候才会被销毁。
Service与Thread:
Service是运行在主线程,所以并不是异步的子线程。但是如果在Service里面做太多的耗时操作也是会影响UI线程出现ANR,所以我们可以在Service里面开新的线程去执行耗时的操作。
例如:
前台Service:
防止系统因内存不够,而对Service进行回收,或者需要将一些信息一直展示给用户看。
在郭神的博客中,他是这样写的
但是在相对较后面的API里面已经舍弃了new Notification的用法,和setLatestEventInfo方法,我自己查看源码解决如下: