Service:
1.生命周期:
onCreate()->onstartCommand()->onDestory()
onCreate()->onBind()->unBind()->onDestory()
使用服务一定要在Xml文件中注册服务。
2.服务分两种一种是需要绑定的一种是不需要绑定的,需要绑定的服务启动方式是调用bindService()绑定服务给activity并且启动activity(),另外一种是调用startService直接启动服务不需要绑。
3.Service 的实例有且仅会有一个,如果startService或者BindService()之后Service后再也不会创建Service的实例当然也不会调用onCreate()。
4.一个服务可以绑定到多个activity上,只有所有的用户都执行了unBind()方法之后才会销毁该服务,如果只有一个用户执行了onstart(),其余用户都执行了unBind()该Service也不会销毁。
5.Service在main thread线程中所有它不能用来执行耗时操作,但是可以在它的子线程中进行耗时操作比如I/O。
6.Activiyt,intent,Service之间的关系,共同点:它们都是Context类的子类ContextWrapper的子类。不同点Activiyt的作用是负责前台页面的展示和与用户交互,Service的作用是负责后台的服务,intent可以看作是Service和Activity的通性使者。
7.弹吐司的要求是需要又一个Context上下文,而Service本身就是Context的子类所以是可以弹吐司的。
8.停止服务非绑定的Service调用stopService()停止服务,绑定的服务可以调用unBind()进行停止服务。
9.为什么在Service中开子线程而不是在activity中开子线程?
activity很难对thread进行把控,如果activity销毁了再也没有任何的办法重新获得线程的实例,而且在一个activity中创建了子线程而其他的activity是无法操作该线程的。但是Service就不同了,所有的activity都可以通过BindService()和Service进行关联,可以很方便的操作里面的方法,即使activity被销毁了,只要后续重新跟Service重新建立关联就可以取到原来的实例。因此可以用Service进行后台的任务处理,activity可以安全的finish()。