Service 的生命周期;两种启动方法和区别
来源:互联网 发布:手机淘宝开店没反应 编辑:程序博客网 时间:2024/06/12 20:05
1:startService
Service的生命周期:onCreate() --> onStart() -> onDestroy()
停止服务:service.stopService()
2:bindService
Service的生命周期 onCreate() --> onBind() --> onUnBind() --> onDestroy()
停止服务:UnbindService()再StopService()
【在开发中我发发现,当app执行 Process.killProcess(Android.os.Process.myPid()) ; System.exet(0): 的时候】
系统会重启service
针对不同版本的系统。有的系统会执行context.startService 而有的会 执行context.bindService
两者唯一的相同点就是都会重启service
使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,对啊,就是stopService不好使了,只能先UnbindService,再StopService,所以是先start还是先bind行为是有区别的。
如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。
如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.
- Service 的生命周期;两种启动方法和区别
- Service 的两种启动方法和区别
- Service的两种启动方式和对应的生命周期
- Service两种启动方式的生命周期
- Android Service 两种启动方法和区别
- service的生命周期和两种开启方法.
- service的两种启动方式和区别
- Service的两种启动方式onstartService和onbindService区别
- Service的两种启动的区别
- Service两种启动方式的区别
- service的两种启动方式-的生命周期
- Android Service的两种启动方式以及生命周期
- android 启动 service 的两种方法
- android 启动 service 的两种方法
- Service的两种启动方法
- Android Service 的两种启动方法
- Service的两种启动方法
- Android--Service的启动方法和区别
- numpy使用fromstring创建矩阵
- C# 数组、ArrayList、List、Dictionary的用法与区别
- 1030. Travel Plan
- 1
- Windows核心编程笔记(十七) DLL高级技术
- Service 的生命周期;两种启动方法和区别
- 2
- 计算
- 字符串循环左移
- android底部菜单应用
- windows8.1上python3.5安装pybrain
- [POJ3468] 区间操作 - 树状数组
- Windows10 & Visual Studio 2015 测试Caffe
- Android自定义广播(动态、静态)