`
caiwb1990
  • 浏览: 312550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Service 服务详细讲解

阅读更多
Android 的Service 和 Handler一样很重,如需了解Handler,请查看Android Handler 异步消息机制

下面我们具体讲解一下Service:

Service概念及用途:
Service 是 Android 系统中的一种组件,它和Activity 的级别差不多,但又Activity不同,它是不能与用户交互的,但可以和其他组件进行交互。它不能自己运行,只能后台运行。
如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用Service,我们就听不到歌了,所以这时候就得用到Service了,又比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的这时候我们可以用Service在后台定时更新,而不用每打开应用的时候在去获取。

Service生命周期:
Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。

Service与Activity通信:
Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL)这一节我不作过多描述,当我们想获取启动的Service实例时,我们可以用到bindService和onBindService方法,它们分别执行了Service中IBinder()和onUnbind()方法。

Service 启动方式:
一、context.startService()
二、context.bindService();

使用Service之前必须在androidMainfest.xml 中注册
调用流程:

第一种:

启动:context.startService() ---> onCreate() ---> onStartCommand()
销毁:ontext.stopService()   ---> onDestroy();
如果Service还没运行,则Android会先调用onCreate()方法,然后再调用onStartCommand();
如果Service已经运行了,则只调用onStartCommand(),所以一个Service的onStartCommand(),方法可能会调用多次。

第二种:
启动:context.bindService() ---> onCreate() --->onBind();
销毁:onUnibind() ---> onDestroy()
onBind() 将返回给客户端一个IBind接口实例,IBind允许客户端调用服务的方法,比如得到Service允许状态或者其他操作这个时候调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Service就会调用onUnibind() ---> onDesytoy()相应退出









分享到:
评论

相关推荐

    Android service讲解文档ppt

    在提供的文档"Service文档.docx"和"Android Service讲解.ppt"中,你将找到更详细的步骤说明、示例代码和最佳实践,帮助你深入理解和应用这些概念。无论是Local Service的简单后台任务处理,还是Remote Service的跨...

    Android-Service与Activity传值

    本篇文章将详细讲解如何实现`Service`到`Activity`的数据传递。 1. **创建Service** 首先,我们需要创建一个`Service`。在Android Studio中,可以通过新建一个类并继承自`Service`。例如,我们可以创建一个名为`...

    Android Service深入解析Demo

    这篇博客"Android Service深入解析Demo"通过实例深入讲解了Service的相关知识,下面将详细阐述Service的核心概念、生命周期、启动与绑定方式以及如何在实践中应用。 1. **Service核心概念** Service是Android系统...

    Android-AndroidService下载文件

    本教程将详细讲解如何利用Android的`Service` 组件来实现文件下载功能。 一、Android Service 概述 `Service` 是Android四大组件之一(Activity、BroadcastReceiver、ContentProvider、Service),它主要用于执行长...

    Android创建Service后台常驻服务并使用Broadcast通信

    本篇文章将详细讲解如何在Android中创建一个常驻Service,并结合BroadcastReceiver实现线程间(Service Thread与Activity)的异步通信。 一、创建Service 1. 定义Service类:首先,我们需要创建一个继承自`Service...

    高焕堂android系统架构详细讲解

    在这个详细讲解中,我们将探讨以下几个核心知识点: 1. **Linux内核**:Android是基于Linux内核构建的,内核负责硬件抽象、内存管理、进程调度等关键功能。它为上层的各种服务和应用程序提供了稳定的基础。 2. **...

    高焕堂Android系统架构详细讲解

    《高焕堂Android系统架构详细讲解》是一份深入解析Android系统的宝贵资料,涵盖了从云端服务与Android硬件整合,到驱动框架设计,再到Java层框架、事件驱动应用开发以及线程模式等多个关键知识点。以下是这些主题的...

    Android Service实现断点下载

    首先,我们来详细解释Service的基本概念。Service是Android四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它在后台运行,不提供用户界面。Service可以被其他组件(如Activity)启动或...

    Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务

    以下是对Service的详细解释: 1. **后台服务(Background Service)**: 后台服务是在用户不直接交互的情况下运行的。它们通常用于执行音乐播放、网络通信等操作。虽然后台服务不会显示任何用户界面,但其运行可能...

    Android Service讲解 和 aidl 实现

    在Android应用开发中,`Service`和`AIDL(Android Interface Definition Language)`是两个非常重要的组件,它们分别用于后台长时间运行的任务和服务间通信。本文将深入探讨这两个概念以及如何通过`AIDL`来实现服务...

    android音乐播放器service学习案例

    本案例“android音乐播放器service学习案例”着重讲解如何利用Service来实现一个音乐播放器,使音乐能够在后台持续播放。 首先,我们需要了解Android Service的基础知识。Service分为两种类型:标准服务...

    android service 例子

    本示例将深入讲解如何创建和使用Android `Service`,这对于初学者来说是一个很好的起点。 一、Service基础概念 `Service` 是Android四大组件之一(Activity、BroadcastReceiver、ContentProvider、Service),它...

    2011.09.01(3)——— android service startService bindService

    本篇文章将详细讲解 `startService` 和 `bindService` 这两种启动 `Service` 的方式,以及它们之间的区别和应用场景。 `startService` 是 Android 中启动 `Service` 的常见方式之一。当你调用 `startService()` ...

    android Service 和 数据序列化

    本教程将深入讲解如何在Android应用中使用`Service`以及数据序列化的相关知识。 首先,我们来看`Service`的使用。创建一个`Service`需要继承`android.app.Service`类,并重写其生命周期方法,如`onCreate()`, `...

    Android_Service的高级应用示例

    在学习这个示例时,你可以通过阅读博客文章"http://www.cnblogs.com/plokmju/p/Android_Service2.html"来获取更详细的解释和指导。该博客可能涵盖了服务生命周期、服务的启动与绑定、服务间的通信(如通过Binder或...

    Android_Service1

    这篇博客"Android_Service1"深入探讨了`Service`的相关知识,以下是对这些知识点的详细解释: 1. **Service的种类**: Android中的Service分为两种类型:标准Service和IntentService。标准Service需要手动管理和...

    Android Service和webp讲解源码 

    Service在Android中的工作方式分为两种:标准服务(Standard Service)和绑定服务(Bound Service)。标准服务一旦启动就会一直运行,直到被系统或开发者显式停止。而绑定服务允许其他组件(如Activity)通过接口...

    android-Service的2种应用

    本篇文章将深入探讨Service的两种主要应用:`startService`和`bindService`,并结合提供的源码分析进行详细解释。 首先,`startService`是启动一个Service的方式,它适合那些不需要与启动Service的应用组件直接交互...

    android--service实例

    本教程的“android-tutorial”可能包含了一系列关于Android Service的实例代码和详细解释,涵盖从基础到进阶的各种应用场景,对于理解和掌握Service的使用非常有帮助。通过学习和实践这些示例,开发者能够更好地应对...

    android service 带进度条下载功能原理

    本篇文章将详细讲解如何利用`Service` 实现带有进度条的文件下载功能。 首先,我们需要创建一个`Service`,继承自`IntentService`或`Service`。`IntentService`更适合执行一次性任务,它会自动在线程中处理任务,并...

Global site tag (gtag.js) - Google Analytics