- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我们可以使用java接口(interface)帮助客户端应用程序调用绑定(bind)服务的同时,使用AIDL
有什么优势?
例如,对于ITestService
,我们应该创建一个AIDL
,如下所示:
// ITestService.aidl
package com.varanegar.vaslibrary.service;
// Declare any non-default types here with import statements
interface ITestService {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
double aDouble, String aString);
int test();
}
然后我们应该实现生成的Stub
类:
public class TestService extends Service {
public class TestImpl extends ITestService.Stub{
@Override
public void basicTypes(int anInt, long aLong, boolean aBoolean,
float aFloat, double aDouble, String aString) throws RemoteException {
}
@Override
public int test() throws RemoteException {
return 0;
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return new TestImpl();
}
}
不过,我相信我们可以很容易地创建一个像这样的 java 接口(interface):
interface ITestService {
int test();
}
然后创建实现该接口(interface)的服务:
public class TestService extends Service implements ITestService {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int test() {
return 0;
}
}
根据维基百科:
AIDL: Java-based, for Android; supports local and remote procedure calls, can be accessed from native applications by calling through Java Native Interface (JNI)
还有其他令人信服的理由来使用 AIDL
而不是普通的 java 服务吗?
在我看来,我可以在没有任何 AIDL
的情况下使用绑定(bind)和启动的服务。因为这可以在 android 库中编写 java 接口(interface)作为服务器和所有客户端应用程序之间的契约。
我不打算创建 native 应用程序。因此,如果 AIDL
用于将 Java 服务公开给 native 应用程序,那么在我的情况下使用它是否正确?我对吗?如果我误解了 AIDL
,请纠正我。
提前致谢
最佳答案
来自documentation :
Using AIDL is necessary only if you allow clients from different applications to access your service for IPC and want to handle multithreading in your service. If you do not need to perform concurrent IPC across different applications, you should create your interface by implementing a Binder or, if you want to perform IPC, but do not need to handle multithreading, implement your interface using a Messenger. Regardless, be sure that you understand Bound Services before implementing an AIDL.
关于android - 我是否应该使用 AIDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40994800/
我正在尝试使用 aidls 构建一个库。 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := test LOCAL_SR
我下载了 android 源代码,试图了解 stub 类在 android 电话系统中的工作原理,所以我使用 aidl convert ITelephony.aidl 但它给我错误,例如: 找不到类
首先,这可能是重复的,但我搜索了大量时间试图修复此错误,但找到的有关此主题的页面都没有帮助我修复错误。以下是我去过的一些地方: Android: AIDL refusing to generate c
我想知道AIDL中的inout参数是做什么用的? 我知道什么是进来的,什么是出去的。 (out 不会编码(marshal)传递的对象)。 但我不明白 inout 是做什么用的。 我查看了: "In/o
我正在尝试实现 AIDL,但我只是不明白它是如何工作的。我的意思是方法调用的进展是什么? 我不明白如何通过 AIDL 将对象从服务获取到我的 Activity 。我一直用google docs寻求指导
我正在应用程序中实现计费,但在构建项目时出现以下错误。 C:\Users\user\AndroidStudioProjects\Blessd\app\src\main\aidl\IInAppBilli
我的 AIDL 文件中有一个函数 int getAvailableTokens(out List list); 我想从主类调用这个函数并作为参数给出 List mylist为了功能将设置它。我该怎么做
我想在我的应用程序中试用 android m 预览。我已经下载了最新的构建工具和 m 平台。我已将其包含在我的 build.gradle 文件(模块应用程序)中: compileSdkVersion
我在我的项目中使用 AIDL,我有两个 apk:AIDLServer 和 AIDLClient。 AIDLServer中目前还没有Activity(只有服务),但是有些操作需要用户的许可(比如蓝牙,L
我必须让其他开发人员能够连接到我的服务,但我的 AIDL 导入了我的类。我不想给他们服务的源代码,只是 APK 和某种 stub 文件(java、jar?)。我怎样才能给他们一些东西 - “胶水” -
我正在研究 AIDL。我的 .aidl 文件在另一个项目(另一个应用程序)中。假设 aidl 文件名为 IService.aidl。但是在分配 IService service = IService.
我有一个 AIDL 文件,我想在其中返回一个整数列表。简单的喜欢: interface blah { List getSubscriptionsForUser(int user); } 但我不
我一直在尝试将 IPC 用于多 apk 项目。 其中一个公开了一个有很多方法的服务。其中一些方法将 Parcelable 对象作为参数(或返回它们)。 我做的第一件事是为我的服务创建一个 aidl 文
当应用程序使用 AIDL 调用远程服务时,是否提供任何安全措施?还是仅仅是恶意应用程序可以读取数据? 最佳答案 在Android上,一个进程不能正常访问另一个进程的内存。 当您绑定(bind)到具有
正在尝试编译在 Android repo 中找到的 AIDL 文件与我的 Android 项目一起使用一些内置接口(interface)。 但是,每当我访问内部类型时,我都会收到以下错误: ITune
使用 aidl 与广播接收器在应用程序之间发送消息(用于后台和前台处理)的优缺点是什么?我一直在使用接收器,由于带有 Intent 过滤器的订阅模型以及易用性/可扩展性,这很好。将这种方法用于 VS
要求:需要将来自不同进程的服务/契约(Contract)公开给其他应用。例如:getPhoneRecord(recordId)、deletePhoneRecord(phoneId)等 可能的解决方案:
我真的很感激任何帮助来解决这个问题:我有一个 svn trunk 项目和一个 svn-bracnch。两者都已 checkout ,并从中创建了一个不同的 Eclipse 工作空间。 我可以毫无错误地
在我们可以使用java接口(interface)帮助客户端应用程序调用绑定(bind)服务的同时,使用AIDL有什么优势? 例如,对于ITestService,我们应该创建一个AIDL,如下所示: /
要了解android中的AIDL,我想要一个真实的例子,意思是我们需要在什么开发场景下使用AIDL。 通过阅读 Android 文档 ...它让我感到困惑和很多问题,所以很难为我阅读整个文档,任何人都
我是一名优秀的程序员,十分优秀!