`
Faroe
  • 浏览: 9485 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

service相关理解

阅读更多

一个Service,从本质上来说,可以有两种形式。 
1、 通过startService()启动。这种情况下,该Service与启动它的组件是完全独立的,即使组件被销毁,Service仍会继续,不会自动结束,而且通常情况下不返回任何结果。因此,应在Service执行完毕后调用stopSelf(int)(最好用带参数的,防止一个Service被多个组件请求的情况下,把还在执行的请求结束了)或其他组件调用stopService关闭Service。  开始(onCreate -> onStart)过程,Service停止的时候直接进入销毁过程(onDestory).如果调用者(Activity)自己退出而没用调用stopService(),刚service会一直运行下去,直到下次调用者(Activity)再启动起来,并确调用stopService(); 
2、 通过bindService()启动。其生命周期与绑定该Service的组件有关,可以多个组件绑定一个Service,但当所有组件都解绑后,该Service将被销毁。但是当有组件绑定一个Service时,该Service无法以stopService或stopSelf的方式终止。 通过bindService启动,只会运行onCreate,这时将调用者(Activity)与service绑定在一起,如果调用者(Activity)退出,service就会调用onUnbind -> onDestroy.

无论何种方式启动,service只会创建一起,即onCreate只会执行一次。


默认情况下,任何组件都可以访问Service,但是我们可以在AndroidManifest.xml中将其声明为私有的,从而拒绝其他应用中的组件访问本应用的Service。通过设置intent-filter,可以使得Service能够被隐式调用。 
同时,一个Service默认情况下运行在它的宿主进程的主线程(除非在AndroidManifest.xml中另行设置),因此,若要在一个Service中执行一些复杂的操作,最好在Service的执行代码中新建一个线程,在里面运行。这样能够降低系统出现Application Not Responding (ANR)错误的风险。 
若只想在Activity运行时在后台执行某些操作,可以在Activity的onCreate中新建一个线程,在onStart中启动,在onStop中停止。而不是采用Service的方式。 

分享到:
评论
1 楼 唔系好人 2012-05-25  
上去官网的开发想到,写得很详细!!虽然是英文!!我也在啃

相关推荐

    Service 相关操作

    通过阅读和理解这段代码,你可以更深入地了解Service的工作原理和使用方法。 总结来说,Service是Android系统中处理后台任务的关键组件,掌握其生命周期、启动方式、绑定机制以及异步操作是Android开发中不可或缺的...

    activity service 数据交互

    本篇文章将深入探讨Activity与Service之间的数据交互,并通过具体的BroadcastService实例来阐述相关知识点。 首先,理解Activity与Service的通信方式至关重要。主要有以下几种: 1. **Intent**: 这是最常见的通信...

    servicedemo

    以上就是关于“servicedemo”项目中涉及的Android Service相关知识,包括创建、启动、停止、绑定和解绑Service,以及Service生命周期管理和并发控制。理解和掌握这些内容对于开发Android应用特别是需要后台处理功能...

    ServiceDemo

    8. **ServiceDemo项目结构**: 项目的文件列表中,`build`和`.gradle`目录存储构建相关的配置和缓存;`gradlew`是Gradle Wrapper,用于在没有全局安装Gradle的情况下构建项目;`settings.gradle`定义项目模块;`.idea...

    Android Service深入解析Demo

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

    android service toast 01

    在“ServiceToast”这个压缩包中,可能包含了实现上述功能的示例代码,包括Service的定义、Toast的显示以及处理线程同步的相关逻辑。开发者可以通过阅读和分析这些代码来学习如何在Service中正确地使用Toast,同时...

    service应用

    这涉及到多个关键知识点,包括Service的基本概念、生命周期、启动与绑定方式,以及与多媒体播放相关的API。 1. Service基础: Service是Android中的一个组件,它可以在没有用户界面的情况下运行。Service主要用于...

    android-Service的2种应用

    在Android开发中,Service是四大组件之一,它用于在后台执行长时间运行的操作,即使用户离开了应用程序界面,Service依然...对于深入学习,可以进一步研究Android官方文档和相关源码,以便更好地理解和运用Service。

    Android_Service1

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

    SSM框架下基本的mapper,dao,service,controller等相关文件的整理

    "SSM框架下基本的mapper,dao,service,controller等相关文件的整理" 在SSM框架中,mapper、dao、service、controller等相关文件是非常重要的组件,它们之间的关系和调用顺序非常关键。下面,我们将对这些组件进行...

    前台service

    博客中的Demo可能包含了如何创建、启动和停止前台Service的代码示例,以及如何构建Notification的相关细节。`ǰ̨service2.gif`和`ǰ̨service.gif`可能是展示Service状态变化的动态图,帮助读者更好地理解Service的...

    systemd service中文手册

    总的来说,`systemd.service` 配置文件是理解和管理 Linux 系统服务的关键,它允许精细控制服务的行为,包括启动顺序、依赖关系、资源限制等,使得系统管理和维护更为高效和灵活。了解并熟练掌握 `systemd.service` ...

    android service

    本篇我们将深入探讨“android service”这个主题,结合提供的标签“源码”和“工具”,我们将分析Service的工作原理、如何创建及使用,以及相关的开发工具。 首先,Service的生命周期是由系统管理和控制的,主要...

    android service使用详解

    在Android开发中,Service是四大组件之一,它用于在后台...理解并熟练运用Service的启动、绑定以及生命周期管理,是每个Android开发者必备的技能。关注博客 http://himici.com/ 可以获取更多Android开发的相关知识。

    绑定本地Service并与之通信

    7. **Service生命周期**:绑定Service的生命周期与绑定它的客户端紧密相关。当所有客户端都解绑后,Service会在onUnbind()和onDestroy()方法中被销毁。如果Service是通过startService()启动的,即使所有客户端都解绑...

    Android基础 Service

    3. 定时任务:例如定时发送推送通知,Service可以定期唤醒并执行相关操作。 4. 网络通信:长时间的网络请求,如上传或下载数据,适合在Service中进行。 六、Service与其他组件的通信 Service可以通过Intent来启动和...

    android_service

    总结,理解并熟练使用Android的Service对于开发高效、稳定的后台功能至关重要。通过启动Service处理长时间任务,绑定Service进行双向通信,以及合理利用Widget与Service的交互,开发者可以创建功能丰富的Android应用...

    Android中Service组件的使用

    本篇将详细阐述Android中Service组件的使用,以及与其相关的Connection、Binder和IBinder概念。 首先,Service的基本使用流程包括创建Service类、在AndroidManifest.xml中声明Service、启动和停止Service。创建...

Global site tag (gtag.js) - Google Analytics