`
bcyy
  • 浏览: 1831674 次
文章分类
社区版块
存档分类
最新评论

Android Service---终止服务

 
阅读更多
被启动类型的服务必须管理它自己的生命周期。也就是说除非系统要回收系统内存,否则系统不会终止或销毁这个服务,在onStartCommand()方法返回后,这个服务会继续运行。因此而这种类型的服务必须通过调用stopSelf()方法或另一个组件通过调用stopService()方法才能终止。

一旦用stopSelf()方法或stopService()方法请求终止服务,那么系统一有可能就会销毁这个服务。

但是,如果你的服务同时处理多个对onStartCommand()方法的请求,那么在你完成请求启动过程时,不应该终止这个服务,因为你的服务可能正在接受一个新的启动请求(在第一个请求结束时终止服务有可能会终止第二个请求)。要避免这个问题,你能够使用stopSelf(int)方法来确保你请求终止的服务始终是基于最近启动的请求。也就是说,调用stopSelf(int)方法时,你要把那个要终止的服务ID传递给这个方法(这个ID是发送给onStartCommand()方法的)。这样如果服务在你调用stopSelf(int)方法之前收到了一个新的启动请求,那么这个ID就会因不匹配而不被终止。

警告:重要的是你的应用程序要在工作结束时终止它们的服务,从而避免浪费系统资源和电池电量。如果需要,其他的组件能够调用stopService()方法终止服务。即使对于能够绑定的服务,如果这个服务接收了对onStartCommand()方法的调用,你也必须自己来终止这个服务。

关于服务的生命周期的更多信息,请看“管理服务的生命周期”

注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。

如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar

分享到:
评论

相关推荐

    Android不死Service

    创建一个不死的Service,在被用户终止或者第三方软件清理之后的最短时间内恢复服务

    Android-Accessibility-Api:安卓无障碍服务Api, 为了简化无障碍服务使用,并使用 Kotlin 以提供简洁的Api

    //无障碍服务声明 未开启会跳转设置页面提示开启服务,并抛出异常 终止执行 requireBaseAccessibility() toast("下拉通知栏..") delay(1000) toast("快捷设置..") //操作之间需要适当延时等待 delay(1000) //下拉...

    android 创建服务

    android 使用不同方式创建服务,主要用来演示使用不同方式创建服务时service的生命周期。

    Android中Service的全面总结

    全面总结Android Service的使用方法,具体内容如下 1、Service的种类 按运行地点分类: 其实remote服务还是很少见的,并且一般都是系统服务。...这样做的好处在于,当服务被外部强制终止掉的时候,ONGOING 的 Notifi

    Android通知栏前台服务的实现

    一、前台服务的简单介绍 ...后台运行的Service系统优先级相对较低,当系统内存不足时,在后台运行的Service就有可能被回收,为了保持后台服务的正常运行及相关操作,可以选择将需要保持运行的Service设置为前台服务,从

    Android8.1 init进程学习

    本文档是基于Android8.1进行分析,对init进程的启动初始化工作进行了分析,包括解析init.rc配置文件,开启属性服务,开启socket监听子进程终止并处理,创建epoll_fd监听创建的其他fd,用来调用对应的处理函数;...

    Android中的Service相关全面总结

     主进程被Kill后,服务便会终止。  非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。 远程服务(Remote) 该服务是独立的进程,  服务为独立的进程,对应进程名格式为所在包名加上你指定的android:...

    android service实现循环定时提醒功能

    1)能够设置间隔时间 2)在apk应用被停止的情况下仍然能定时提醒 3)能够播放指定闹铃 4)能够及时终止提醒 效果图: 设置间隔 时间到后会跳出全局AlertDialog提示并且开始播放闹铃 即使APP被终止了,仍然能够...

    android 面试2

    //启动负的调用者跟服务绑定在一起,调用者一点退出,服务也会终止  停用Service:  stopService(intent);//停止startService启动的服务  unbindService(intent);//停止bindService启动的服务  9. 注册广播有几...

    MusicPlayer:使用Clean Arch,MVVM,LiveData,Room,Koin,Coil,Service,Notification和ExoPlayer实施

    Android-Clean-Arch-Room-Koin(MusicPlayer) 一个简单的音频播放器Android应用程序,已通过使用Clean Architecture和MVVM设计实现,以通过在后台运行服务并在屏幕顶​​部显示通知来播放(在线/离线)歌曲。...

    mobile-app-testing:用于测试使用Pega 7平台构建的移动应用程序的模板,示例和资源

    注意:该项目已终止生命,并且不再维护。 以下信息应视为已弃用。 Pegasystems使其客户能够利用AWS Device Farm测试其使用Pega 7 Platform构建的移动应用程序。 为了简化流程,该存储库提供了开放源代码模板的集合...

    androidReview:青岛理工大学15级安卓复习知识点

    特点没有用户界面,其他特性很像Activity比后台Activity优先级高,不会被轻易终止即使service被终止,当系统资源恢复的时候,也将自动恢复运行状态,(onStartCommand 返回 START_STICKY)用于进程之间通信,解决两...

    lee_location_background

    bound_service 颤振中的绑定服务。 入门 这是Flutter中绑定服务的简单实现。... 如果该应用程序被终止,该服务也将被系统终止。 检查代码的文件: bound_service.dart-负责与Java通信 main.dart-与Java的顶级通

    实例讲解Android中的AIDL内部进程通信接口使用

    如图,我们点击“播放”时,系统就会去远程调用我们提供的一个service(与当前service不是同一个应用哦),然后操作service中的音乐播放,点击“停止”则会终止播放。想要重新播放的话,必须先点“销毁service”,再...

    Android Jetpack(八)WorkManager

    一、WorkManager 介绍  WorkManager 是 Jetpack 组件库的一个组件,负责管理后台任务。  WorkManager API 可以让你更加容易的管理一些后台任务,即使你的应用是退出或者设备重启的状态... WorkManager和传统 Service

Global site tag (gtag.js) - Google Analytics