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

在Android中Service概述和AIDL例子

 
阅读更多
      Service的主要用途是提供后台服务调用,与Activity不同,service没有界面,也正因为如此,它不像Activity那样当用户离开应用界面就停止,Service则一直在后台运行,除非明确命令其停止。

       Service也有生命周期的。当启动Service时,首先调用OnCreate()方法,然后调用onStart()方法。当Service停止时,会调用onDestroy()方法。

启动Service有两种方式,分别是调用startService()和bindService()。使用前者时,如何该Service还没启动,那么系统会先后调用该Service的onCreate()方法和onStart()方法,并且在使用完后该Service并不停止,除非使用stopService()明确停止。bindService()用于绑定一个Service,如何Service不存在,绑定就会失败;不过可以设置bindService()的参数,指定当Service不存时启动该Service,通过此方法启动的Service在使用完后,系统会自动停止该Service。

     如果只是提供后台服务的话,那么不需要使用Service,使用线程Thread就可以了。Service的特点还在于进程间的服务调用,不仅在一个应用程序内部可以调用,还可以跨应用程序调用。调用Service服务的程序成为客户端Client。

     如果Service与Client同在一个应用程序内,那么它们默认是在同一个进程、同一个线程内运行,因此,为了不使Client线程挂起,一般创建Service时都会重新建立一个Thread完成具体的工作,Service仅是提供一个调用的接口。而如果Client是在另一个程序中,那么Client和Service则运行在不同的进程中。
AIDL就是按照这个利用service的不用进程间来实现的。

转载自:http://www.2cto.com/kf/201111/111175.html

分享到:
评论

相关推荐

    Android aidl 进程通信

    1. **定义服务接口**:通过AIDL定义服务接口,如例子中的`ICountService`。 2. **实现服务**:创建服务类并实现上述接口,如`CountService`。 3. **客户端绑定服务**:客户端通过`bindService()`方法与服务建立连接...

    安卓Aidl通信2

    在这个例子中,我们定义了一个简单的加法接口,接受两个整数参数并返回它们的和。 ### 4. 生成 Binder 类 编译项目后,Android Studio会自动生成与`.aidl`文件相对应的Java代码,位于`gen`或`build/generated/...

    掌握AIDL IPC机制

    在这个例子中,我们定义了一个名为`Rect`的类,它实现了`Parcelable`接口,从而使得该类的对象可以通过AIDL进行序列化和反序列化操作。 ### 总结 通过本文的介绍,我们可以看到AIDL IPC机制在Android开发中的重要...

    如何添加一个Application Framework Service(without native code)

    这种方法不仅展示了如何在Android框架中添加自定义服务,还介绍了AIDL接口的使用以及客户端和服务端之间的通信机制。 通过实践这个例子,开发者可以更好地理解`Application Framework Service`的工作原理,以及如何...

    android插件化例子demo下载地址

    ### Android插件化技术概述 随着移动应用的不断复杂化及功能多样化的需求,开发者们面临着越来越多的挑战。其中,如何优化应用性能、提高开发效率、降低维护成本等问题日益凸显。在此背景下,Android插件化技术...

    Android_binder

    然而,由于Binder涉及到复杂的多线程和内核交互,因此在实际开发中还需要注意相关的安全性和稳定性问题。 综上所述,Android的Binder机制是一项非常重要的技术,它不仅支撑着整个Android生态系统的运作,也为开发者...

    第六章_Android进程间通信.pdf

    在Android应用开发中,进程间通信(IPC,Inter-Process Communication)是一项重要的技术。由于Android应用程序通常由多个组件组成,并且每个组件可能运行在不同的进程中,因此需要一种机制来支持不同进程间的通信。...

    BinderTest

    - **Service**:在AndroidManifest.xml中声明服务,并在服务的生命周期方法中启动和停止Server。 - **AIDL(Android Interface Definition Language)**:用于定义跨进程接口,使得编译器可以生成客户端和服务端所需...

Global site tag (gtag.js) - Google Analytics