`
handsomeliuyang
  • 浏览: 314964 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

AIDL和Service使用心得

阅读更多
Service是在后台运行的程序,只是没有界面,所以常常用来进行下载,上传,音乐播放等等操作。这时,我们常常把Service运行一个单独的进程中。但常常我们的业务需要我们的前台Activity与后台的Service进行交互、进行通信,比如下载进度条。
Activity和Service的通信的方式
第一种是用广播intent,这种方式在显示进度条的时间不是太好,因为这时要发送大量的广播,会把UI主线程堵塞。
第二种方法是用:aidl。至于aidl怎么用,网上有很多的文章,我这里主要讲线程之间的关系。如果下载操作,是在Service的主线程中做的,那Activity中在调用这个下载方法时,会等到后台的Service方法执行完后,再执行,所以这时方法的返回值是正确的。但如果下载操作是在Service的子线程中执行的,那Activity中不会等到这个下载方法执行完,会马上开始执行后面的代码,所以这时得到的结果不是正确的。
0
0
分享到:
评论

相关推荐

    使用AIDL实现Service与Client绑定后的双向调用

    有时,我们可能需要在Service和另一个应用组件之间进行更复杂的通信,例如双向交互,这时可以利用Android Interface Definition Language(AIDL)来实现。本文将深入探讨如何使用AIDL在Service与Client之间实现绑定...

    深入理解aidl&service;

    深入理解aidl和service机制。 aidl是android进行系统间通信的借口描述语言,仔细分析由aidl生成的java类,你会发现code是用的是proxy design pattern,能看到这层就会觉得google的设计其实真的是很巧妙。如果需要...

    一个及其简单的AIDL远程Service调用

    总结来说,这个简单的例子展示了如何使用AIDL在客户端和Service之间建立连接,进行数据传输。AIDL是Android IPC的重要工具,使得不同进程的应用组件能够协同工作,扩大了Android应用的功能范围。理解并熟练运用AIDL...

    Activity中使用AIDL让Service与Activity通信

    本文将深入探讨如何在Activity中使用AIDL来让Service与Activity进行通信。 首先,我们需要了解AIDL的基本概念。AIDL是一种特殊的接口定义语言,它允许Android系统生成必要的Java绑定类和代理对象,以便在不同的进程...

    aidl.rar_AIDL_AIDL.rar_android AIDL service_android service_andr

    AIDL(Android Interface Definition Language)是Android...通过以上知识点,你可以更好地理解和使用AIDL在Android应用程序中实现服务的跨进程通信。理解并熟练运用AIDL有助于提高Android应用的架构设计和功能实现。

    Activity和Service生命周期及使用AIDL通信实例备份

    本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行进程间通信。 Activity是Android应用程序的用户界面,它负责与用户交互。Activity的生命周期分为几个关键...

    Android Service讲解 和 aidl 实现

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

    AIDL_service_下载文件

    在Android开发中,AIDL(Android Interface Definition Language)和Service是两个重要的组件,它们共同用于实现跨进程通信和后台服务的持久运行。本教程将详细讲解如何利用AIDL和服务实现多线程下载文件。 首先,...

    AIDL_AidlService_android_

    在提供的`codes`压缩包中,可能包含了一个完整的AIDL服务示例,包括服务端的`AidlService.java`和`IAidlService.aidl`,以及客户端的`MainActivity.java`。通过分析这些代码,我们可以看到如何实际应用上述理论,...

    AIDL和JNI使用的小例子

    当你需要在一个应用组件(例如Activity或Service)中调用另一个应用组件的服务时,如果这两个组件位于不同的进程中,就需要使用AIDL。AIDL定义的接口会自动生成相应的Java代码,这些代码处理了跨进程的数据序列化和...

    通过aidl service调用activity

    本篇将深入探讨如何通过AIDL来调用Service,并进而启动Activity,以及相关的源码分析和工具使用。 首先,理解AIDL的基本概念是必要的。AIDL定义了一种接口,这个接口可以被多个进程共享,允许一个进程(如Service)...

    安卓Service和AIDL使用示例代码

    本示例代码将探讨如何在Android应用中使用Service和AIDL。 1. **Service基础** - **Service生命周期**:Service有其特定的生命周期,包括onCreate(), onStartCommand(), onBind(), onRebind(), onUnbind(), 和 ...

    浅析aidl过程和绑定service的过程(不会使用的撤).zip

    在Android系统中,AIDL(Android Interface Definition Language)和Service是两个重要的组件,它们分别用于进程间通信(IPC,Inter-Process Communication)和后台服务执行。本篇文章将深入探讨AIDL的工作原理以及...

    ITelephony.aidl和NeighboringCellInfo.aidl

    在Android开发中,如果需要使用`ITelephony.aidl`和`NeighboringCellInfo.aidl`,需要创建对应的AIDL文件并实现其接口。AIDL文件定义了服务端和客户端之间的数据传输协议,编译后会自动生成相应的Java接口和Binder类...

    AIDL 实现Service 双向 通讯 Demo

    本教程通过一个"AIDL 实现Service 双向 通讯 Demo"来详细解释如何使用AIDL进行双向通信。 首先,理解AIDL的基本概念。AIDL类似于Java的接口定义,但它的作用是定义一个可以在不同进程间调用的方法。当一个服务需要...

    AIDLService,远程调用例子。包括服务端与客户端两个工程文件

    本示例"AIDLService"包含服务端与客户端两个工程文件,提供了关于如何使用AIDL进行远程服务调用的实践教程。 一、AIDL基础 AIDL文件本质上是定义了一个接口,该接口包含了客户端和服务端之间可以交互的方法。AIDL...

    Service AIDL实例

    在本实例"Service AIDL"中,我们将探讨如何使用AIDL实现跨应用通信。 1. **AIDL基础** - AIDL文件是文本文件,后缀为`.aidl`,它定义了进程间通信的接口。这个接口可以包含方法签名、数据类型以及参数。 - ...

    aidl远程Service+sql数据库操作.zip

    这个示例不仅展示了如何使用AIDL创建远程Service,还演示了如何在Service中安全地进行SQLite数据库操作,以及客户端如何调用这些服务。这为开发者提供了一种在Android应用间共享数据和服务的有效途径。

    AIDL_RemoteService

    3. **编译过程**:Android编译系统会根据AIDL文件生成对应的Java接口和 stub 类,供客户端和服务端使用。 4. **Binder机制**:Android系统的Binder机制是实现IPC的基础,AIDL实际上是构建在Binder之上的高级抽象。 ...

    android aidl 之 system service 架构

    例如,Activity Manager Service(AMS)使用AIDL定义了其接口,允许其他组件启动新的活动,管理任务和栈,以及处理应用程序生命周期。通过调用AMS的AIDL接口,开发者可以实现应用程序的正确导航和操作。 Power ...

Global site tag (gtag.js) - Google Analytics