问题标签 [aidl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Java 到 AIDL 实用程序
我有一个想要通过 AIDL 公开的现有 Java 接口。有没有办法从 Java 自动生成 AIDL?
我知道 Corba 代码的 Java2IDL,所以这将与此类似。
android - 如何在 AIDL 中使用 ResultReceiver
我想使用 ResultReceiver 在 AIDL 中声明一个异步服务 API,而不是创建自己的回调接口。
但是当我尝试导入 android.os.ResultReceiver 时,它不知道 ResultReceiver 是可打包的。有诀窍吗?
例子:
结果(Android 2.2):
似乎如果我在项目中的 src/android/os 中创建 ResultReceiver.aidl,例如:
它有效,但这似乎是一个黑客。有没有更好的办法?
谢谢,埃里克
android - 两个应用程序之间的 AIDL 接口
我已经用 AIDL 接口卡住了一堵墙。我有一个必须通过 3rd 方应用程序控制的应用程序(我对此有足够的控制权,所以我可以要求他们在他们的活动中实现我需要的任何东西)
最初我的应用程序也是一个具有界面和所有内容的活动,但我已将其更改为后台服务,为了进行测试,我创建了一个虚拟应用程序,它设法将服务应用程序启动到后台。
现在我想要一种从服务请求方法调用的方法(主要是;启动、停止、sendData)。我已经为这两个应用程序创建了 .aidl 文件。该aidl 文件只实现了一种方法(这是这里的一些其他问题的礼貌。)
而另一个aidl是相同的,除了包是“foo.otherapp”。我在网上找到的实现对于两个aidl文件都有相同的包,但对我来说这会导致错误(我猜这只是我的一个问题,因为我讨厌命名空间和包,所以我经常只是把它们命名得很糟糕,如果重要的话改变他们,我可以做到)
计划是使用这个方法向服务发送一个字符串,然后切换预定义的字符串来调用一个正确的方法(如果它提高了使用率,也可以只实现三种不同的方法)。
无论如何...我无法让辅助连接,我收到错误“无法启动服务意图
{act=foo.testapp.IScript }:未找到
我认为这个猜测与我的误解有关,即。包名左右)
这是我的测试活动应用程序中的实现
然后在 OnCreate() 方法中我会这样做:
在服务课上我有这个;
最后是清单文件;
实际上,我不知道在处理aidl 时是否必须在清单文件中添加一些内容。在一个例子中,我看到了这一点;
和
我猜错误可能在任何地方。我一直在尝试用口香糖和创可贴来解决这个问题。我想我只是误解了这个的一些基本概念。
无论如何,欢迎任何帮助。
提前致谢!
android - 如何从小部件/本地服务调用 Android 远程服务 (IPC)?
我正在尝试从小部件远程控制动态壁纸。它们在同一个 APK 中,但进程明显不同。调用动态壁纸的“活动”对我来说没什么用,因为它是一个不同的过程。小部件有简单的按钮,按下时,
所以(我认为)我需要的是 IPC 和 AIDL。
首先,我在墙纸一侧创建了 AIDL,效果很好。它具有三个没有额外参数的方法。但是当我将客户端添加到小部件时,我收到一条错误消息,告诉我我无法绑定到该远程接口,因为小部件已经是一个 BroadcastListener。我尝试在不需要 Widget 成为 BroadcastListener 的情况下进行按钮处理,但这似乎是不可能的。
好吧,没问题,对吧?我刚刚在绑定到远程接口的小部件中创建了一个服务,因为虽然小部件是 BroadcastListener,但服务不是,一切都应该没问题。
或者我是这么想的。
好吧,我正在获取小部件的按钮来触发小部件服务。绑定到远程服务会产生以下警告:
无法启动服务 Intent (act=com.blabla.IRemoteService):未找到。
我在小部件的服务中使用 getApplicationContext() 来绑定到远程的东西。我确实在清单中有小部件服务,但我没有远程服务。当我把它放在那里时,我得到一个非特定的 InstantiationException。
在小部件的服务 onStart() 我这样做:
我也有...
我的问题是:有没有人成功地从一个小部件远程调用另一个应用程序?考虑到我在这里谈论的是动态壁纸,并且我对在小部件进程中调用活动不感兴趣但在动态壁纸中引起函数调用这一事实,除了 IPC,我还有什么选择(如果有的话)?
如果 IPC 是去这里的方式,我做错了什么?
android - AIDL接口参数值中的“输入/输出/输入”?
我正在编写一个广播流媒体应用程序。我通过使用 AIDL 接口技术与服务通信,将“广播播放”作为远程服务运行。但我真的不明白一件事。
AIDL 接口参数值中的“out”是什么?
像这样:
我理解“in”,即当从活动中调用该方法时将数据发送到远程。
什么是“out”,为什么我们需要用同样的方法“in”和“out”?在哪种情况下使用它们(“out/inout”)?为什么会String[]
“出局”?
请帮忙..
android - 如何追踪内存泄漏 - 查找活引用
我有一个相当复杂的应用程序 -
UI Activity 启动一个 Service 并设置 2 路 AIDL 回调,以便两者可以通信。
该服务永远运行(除非在 UI Activity 中点击“关闭”按钮)。
问题是当用户退出Activity时,Activity内存没有释放。- 即使 UI Activity 已关闭,我的应用程序使用的内存量也是相同的。- 即使 UI Activity 已关闭,堆上仍会显示 mapTiles 和其他 UI 废话。
所以我的猜测是服务以某种方式持有对活动的引用。我知道许多关于泄漏活动上下文的文章警告。服务仅通过存储在应用程序范围内的弱引用来引用活动。(扩展应用程序的类)
有什么方法可以找到具体引用活动的内容吗?支配树显示 mapTiles 和 ListView 布局占用了我所有的内存......但我找不到对保持这些东西保持活力的 Activity 的引用。
此外,如果发生 OutOfMemoryException,是否有办法转储 HPROF 堆转储?
android - Android Couchdb - libcouch 和 IPC Aidl 服务
我正在使用 android 开发本机 CouchdDB 应用程序。现在就在本周 CouchOne 发布了 libcouch,被描述为“在 Android 上与 CouchDB 交互所需的库文件”: couchone_libcouch@Github
如果无法绑定 CouchDB 服务(如果之前安装了 CouchDB 服务,则它是安装 CouchDB 的基本应用程序)。
更准确地说,据我了解:libcouch 通过尝试从 CouchDB 绑定到 IPC 服务并通过该服务与 CouchDB 通信来估计设备上 CouchDb 的存在。
请参阅 CouchAppLauncher.class 中的方法“attemptLaunch()”以查看此内容:
公共无效尝试启动(){
我对此的疑问是:libcouch 永远无法“找到”以前安装的 CouchDB。它总是试图从市场上安装 CouchDB。这是因为它实际上永远无法绑定到 CouchDBService。据我了解 auf AIDL 生成服务接口的目的,打算将其 IPC 提供给其他应用程序的实际服务应该使用 AIDL。在这种情况下,AIDL 已移至尝试绑定到远程服务的应用程序,在这种情况下为 libcouch。
查看刚刚从该存储库移出到 libcouch 的 AIDL 文件的提交。
对于完整的链接,这里是 Android CouchDB 源的链接:github.com/couchone/libcouch-android
现在,我的发现可能完全错误,也可能是 lincouch 的清单遗漏了一些东西,但我真的很期待得到一些答案!
service - AIDL - 有什么意义?
好的,所以我有一个带有 Activity (UI) 和 Service (background polling) 的 android 应用程序。两者使用 AIDL 错综复杂地连接(包括回调,因此它是双工通信、IPC 等)。
任何时候两人说话我都在使用它。
不过,我还扩展了 Application 类 - 以便两者可以共享公共数据对象。所以Application持有一个Service一直在使用的User对象,Activity在运行的时候也可以访问它。
应用程序还具有对 Activity 的 WeakReference(以避免上下文泄漏),因为用户有时会触发 UI 更新。
所以看起来像
Activity (UI) ---> Application <--- Service
我可以通过执行来触发服务中的 UI 事件
所以我不明白。当我只是弱引用 UI、查看它是否存在并调用它的方法时,为什么还要麻烦复杂的 AIDL 调用。
java - 通过aidl接口传递枚举
由于枚举不是原始类型,通过 Android 中的aidl 接口传递枚举的最有效方法是什么?有没有办法先将枚举转换为序数?
android - Android 远程方法 (AIDL) 与 Intents - 性能和电池使用情况
我的团队正在开发一个 Android 项目,该项目由几个交换数据的 Android 应用程序(在同一部手机上)组成。这个想法是有几个应用程序正在收集一些数据并将这些数据发送到主应用程序。这里的主要挑战是在 CPU 负载和电池使用方面尽可能便宜地进行交换。
据我所知,实现进程间通信有两种方式:
- 意图和活动——一项活动捕捉另一项活动的意图
- 远程方法(通过 AIDL)
我想知道在以下情况下哪个更有效:
- 非常频繁的消息/方法调用,数据发送/流量很少(例如,只传递一堆原语)
- 具有大流量块的不太频繁的消息/方法调用(例如收集数据并定期发送几 KB/MB 的数据)
- 交换大数据块的非常频繁的消息/方法调用
我将不胜感激任何帮助,无论是在比较方面还是在基准的参考/链接方面。