什么是Service :
Service,看名字就知道跟正常理解的“服务”差不多,后台运行,可交互这样的一个东西。它跟Activity的级别差不多,但是他
不能自己运行,需要通过某一个Activity或者其他Context对象来调用, Context.startService() 和 Context.bindService()。
两种启动Service的方式有所不同 :
如果在Service的onCreate或者onStart做一些很耗时间的事情,最好在 Service里启动一个线程来完成,因为Service是跑在主
线程中,会影响到UI操作或者阻塞主线程中的其他事情。
什么时候需要Service :
比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记
录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。
如何使用Service :
Service的调用
Context.startService():Service会经历onCreate -> onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者stopSelf(),他都会被停止。补充说明:传递给startService()的Intent对象会传递给onStart()方法。调用顺序为:onCreate --> onStart(可多次调用) --> onDestroy。
Context.bindService():Service会经历onCreate() -> onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind -> onDestroyed相应退出,所谓绑定在一起就共存亡了 。
补充说明:传递给bindService()的Intent对象会传递给onBind(),传递给unbindService()的Intent对象会传递给onUnbind()方法。 调用顺序为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
注意事项:在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。还有一点,目前我没有遇到过需要startService和bindService交互使用的情况(我认为不会有这种需求),所以不必去考虑交互的问题,待遇到时再考虑不迟。
adcastReceiver只能通过startService启动Service ,因为广播本身生命周期很短,bind的话没有意义
Service的生命周期 :
Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy我们有两种方式启动一个Service,他们对Service
生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate -> onStart stopService的时候直接onDestroy
如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的话,Service会一直在后台运行。
下次TestServiceHolder再起来可以stopService。
2 通过bindService
Service只会运行onCreate, 这个时候 TestServiceHolder 和TestService绑定在一起
TestServiceHolder 退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。
分享到:
相关推荐
在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发布的广播消息。BroadcastReceiver能够使应用在不运行的情况下对特定事件做出响应,从而实现跨应用通信。本示例将详细...
Android Service与BroadcastReceiver、bindService示例详解,代码非常详细,详解博客网址:http://blog.csdn.net/sunboy_2050/article/details/7364024
在Android开发中,服务(Service)、广播接收器(BroadcastReceiver)和通知(Notification)是三个核心组件,它们各自承担着不同的职责,同时在特定场景下相互配合,为应用程序提供后台运行、事件监听和用户交互的...
在Android开发中,Service BroadcastReceiver是一种常见的组件交互方式,它允许我们通过BroadcastReceiver监听特定的系统事件或自定义广播,从而实现Service与其它组件之间的通信。本实例将详细讲解如何创建并使用...
在 Android 系统中,`BroadcastReceiver` 是一个关键组件,它允许应用程序对外部事件进行响应,比如系统级别的事件(如电池状态变化、网络连接状态更新)或者自定义事件(例如应用间的通信)。`BroadcastReceiver` ...
android service Notification BroadcastReceiver Intent 安装的服务开机自启动,service定时的打印消息,消息同时显示在通知栏,窗体界面的跳转,自定义控件的开发。系统广播,定时广播,轮询广播等。...
在Android系统中,Service和BroadcastReceiver是两个非常重要的组件,它们是实现应用程序后台运行和通信的关键。本篇文章将深入探讨这两个组件的原理、使用方法以及它们在实际开发中的应用。 首先,我们来看Service...
在Android开发中,`BroadcastReceiver`(广播接收者)和`Service`是两个非常重要的组件。它们各自扮演着系统通信和后台操作的关键角色。在这个例子中,我们将深入探讨这两个组件的使用,以及如何将它们结合在一起...
因此,开发者需要考虑使用JobScheduler、WorkManager或者Service来替代部分BroadcastReceiver的功能。 七、BroadcastReceiver的最佳实践 1. 使用动态注册减少电池消耗,因为静态注册的BroadcastReceiver会在系统...
在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。BroadcastReceiver可以帮助我们的应用在不运行时也能接收到消息,从而实现后台运行的...
在Android系统中,BroadcastReceiver是实现跨进程通信和全局事件通知的重要组件。它允许应用程序接收并响应系统或自定义广播事件,即使应用没有在运行。本文将深入探讨`BroadcastReceiver`的源码,帮助你理解其工作...
- 对于需要在应用关闭后仍然接收广播的情况,可以考虑使用Foreground Service配合动态注册的BroadcastReceiver。 总之,BroadcastReceiver是Android中一个强大的组件,它使得应用可以在不直接交互的情况下进行通信...
综上所述,"android service下载资源,同时解压资源"这一功能实现涉及到了Android Service、异步下载、BroadcastReceiver、ZIP文件解压等多个技术点,这些知识点在实际的Android应用开发中都非常常见且重要。...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
在Android开发中,BroadcastReceiver(广播接收者)是四大组件之一,它扮演着接收系统或应用广播消息的重要角色。BroadcastReceiver允许开发者在不直接交互的情况下响应系统或自定义事件,从而实现不同组件间的通信...
无论是Local Service的简单后台任务处理,还是Remote Service的跨进程通信,或者是BroadcastReceiver的事件监听,都是Android开发中不可或缺的知识点,理解并掌握它们对于提升应用的功能性和稳定性至关重要。
在Android应用开发中,Service和EventBus是两个重要的组件,它们在实现后台任务处理和界面交互方面发挥着关键作用。Service用于在后台长时间运行任务,而EventBus则是一种优秀的事件总线框架,使得组件间通信更为...
描述提到"android 后台服务定时更新前台Activity Ui 通过广播",这涉及到了Android的Service、UI更新以及BroadcastReceiver(广播接收器)的使用。 首先,Android的`Service`是用于执行长时间运行操作而不与用户...
总之,Android的Service和BroadcastReceiver是实现后台任务和跨组件通信的强大工具。结合使用,它们可以实现诸如监测状态变化并触发相应操作这样的功能,这在许多实际应用中都非常有用。记得在应用的生命周期管理中...