android复习路之Service篇

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()。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章