使用context.startService() 启动Service

其生命周期为context.startService() ->onCreate()- >onStart()->Service running-->context.stopService() | ->onDestroy() ->Service stop
如果Service还没有运行,则android先调用onCreate()然后调用onStart();
如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。

stopService的时候直接onDestroy,
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
该Service的调用者再启动起来后可以通过stopService关闭Service。

所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy

对于bindService()启动Service会经历:
context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop

onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。
这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,
Srevice就会调用onUnbind->onDestroy相应退出。

所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
一但销毁activity它就结束,如果按home把它放到后台,那他就不退出。

补充:
在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),
其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

更多相关文章

  1. Android(安卓)WebView中的JavaScript调用android方法
  2. Android下载网络图片到本地
  3. Android对接webService接口
  4. Android(安卓)- MediaPlayer
  5. How to destroy an Activity in android
  6. android添加超级管理权限
  7. Hook android系统调用研究(一)
  8. JS调用Java代码(Android)
  9. Android应用程序进程启动过程的源代码分析(2)

随机推荐

  1. 高德地图自定义点聚合样式Android
  2. android 实现模拟按键
  3. Android(安卓)Visualizer
  4. 关于Android启动页全屏的解决方案
  5. Android(安卓)bootanimation 制作过程
  6. android朗读英文
  7. Android使用HttpClient时出现错误:java.la
  8. Android(安卓)smali语法
  9. Android实现二级联动
  10. Android获取本机Mac地址及IP地址方法