12

在什么情况下使用AIDL定义服务接口是正确的决定(而不仅仅是创建service类的扩展)?

4

4 回答 4

8

如果您希望应用程序进程之外的类访问服务,则需要使用 AIDL。如果您仅在应用程序内部使用该服务,则可以使用本地服务

于 2010-07-26T14:15:27.133 回答
7

仅仅扩展服务类将不允许您的服务将其方法公开给外部实体。如果您希望您的服务被运行在您的 android 应用程序之外的代码公开/使用,您将必须为它定义一个 AIDL。该 AIDL 将被共享并形成为您的服务合同。请参阅此http://developer.android.com/guide/components/aidl.html

于 2010-07-26T13:38:52.220 回答
1

1.何时使用基于aidl的服务。

将部分代码分段到后端服务中可以获得一些好处:

  • 解耦前端和后端
  • 内存/cpu密集处理可以堆叠到后端服务,服务中的GC不会影响前端用户体验
  • 服务崩溃不会导致整个APP宕机

2.如何创建这样的服务

我写了一个不错的库,可以参考http://github.com/zhchang/hogwarts

于 2014-06-19T08:29:17.570 回答
0

AIDL

Android 接口定义语言 (AIDL) 允许开发人员定义客户端和服务器使用进程间通信 (IPC) 相互通信的编程接口。

本文展示了如何在 Android 中连接到正在运行的服务,以及如何从远程/正在运行的服务中检索数据。

IPC 机制示例

让 RemoteService 成为客户端服务,RemoteServiceClient 成为与远程服务通信的 Activity。

一项服务提供有关给定两个整数的加法、减法和乘法等数学运算的信息。要公开 Service 可以执行的功能,请在项目目录中创建一个 .aidl 文件。

AIDL 示例

于 2014-09-10T11:09:20.193 回答