service

1.被一个组件通过startService()启动,运行在UI线程的后台。有两种状态:1.未绑定状态:开启后,一直运行在后台,除非自己停止自己或在某些情况下被系统回收(应该在任务完成后自己关闭)2.绑定状态:通过bindService()进入绑定状态,此时可以与组件进行通信(也可以是进程间通信),可以被多个组件绑定,当绑定的所有组件销毁会(组件销毁时,还是解绑时?),service自动销毁。


2.服务可以以上两种状态同时存在

3.任何组件都可以用这个service,就像用activity一样,即便是其他程序中的组件。当然也可以把service设为私有,只有本应用可访问。

4.若服务中进行耗时操作,必须在服务中另外开启一个线程,否则可能导致ANR

5.startService()调用startCommand(),必须通过stopself或stopService销毁

  bindService()不调用startCommand(),调用onbind()返回一个Ibinder对象用以获取servic进行交互

6.什么时候应该用service?当你想要离开你的应用,以后还想让他运行在后台。如果只在当前页交互,开启一个线程就好了。

7.为了正确的启动一个srevice,启动一个service的时候要用显示的Intent,如果要加intent filter ,也要再包名加入Intent中

8.通过设置 android:exported="false" 让service 仅本程序可用

9.一个服务可以继承service或IntentService,如果不需要同时完成多任务推荐用IntentService

10.先startService,然后bindService.当调用stopself或stopservice并不能关闭sevice,直到所有的绑定都解绑。

11.一个service可以同时被多个组件绑定,当所有的绑定解绑后才能销毁。


你可能感兴趣的:(service)