When to use an aidl based service?

天涯浪子 提交于 2019-12-04 00:32:25

问题


Under what circumstances would using AIDL to define a service interface be the correct decision (rather than just creating an extension to the service class)?


回答1:


You need to use AIDL if you want a class outside of your application's process to access the Service. If you're only using the service from inside your application, you can use a local service.




回答2:


Merely extending a service class will not allow your service to expose its methods to outside entities. If you want your service to be exposed/used by code which runs out of your android app, you will have to define an AIDL for it. This AIDL will be shared and be formed as contract for your service. Refer this http://developer.android.com/guide/components/aidl.html.




回答3:


1.when to use aidl based service.

A few benefits can be gained by segment part of your code into backend service:

  • decouple front-end and back-end
  • memory/cpu intensive processing can be stacked to backend service, GC in service will not affect front-end user experience
  • service crash will not bring down the whole APP

2.how to create such a service

I have written a good library, you can refer as an example http://github.com/zhchang/hogwarts




回答4:


AIDL

The Android Interface Definition Language (AIDL) allows developers to define a programming interface that the client and server use to communicate with each other using Inter-Process Communication (IPC).

This article shows how to connect to a running service in Android, and how to retrieve the data from the remote/running service.

Example of IPC mechanism

Let RemoteService be a client service and RemoteServiceClient be an Activity to communicate with the remote service.

One service provides information about the mathematic operations like addition, subtraction, and multiplication for the given two integers. To expose the functionality of what Service can do, create an .aidl file in the project directory.

AIDL Example



来源:https://stackoverflow.com/questions/3335214/when-to-use-an-aidl-based-service

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!