Service是一个可以在后台长时间运行操作且没有用户界面的应用组件。(运行在主线程中,不能做耗时操作)
Service的两种启动方式:
1.context.startService() ->onCreate()- >onStart()->Service running-->(如果调用context.stopService() )->onDestroy() ->Service shut down
1.如果Service还没有运行,则调用onCreate()然后调用onStart();
2.如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。
3.调用stopService的时候直接onDestroy,
4.如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再 启动起来后可以通过stopService关闭Service。
2.context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop
1.onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。
2.这个时候会把调用者和Service绑定在一起,Context退出了,Service就会调用onUnbind->onDestroy相应退出。
3.所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
Activity被销毁后很难对Thread进行管理,用Service创建Thread,能避免Activity销毁后,无法获取之前创建的Thread实例。