问题标签 [android-binder]

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.

0 投票
1 回答
1421 浏览

android - Binders Design Patterns in Android - Proxy,Mediator and Bridge Pattern?

I come from C Background and have knowledge on C++(at least I know virtual functions, INheritance, Code -reuse and some OOPS concept), But still I am having hard time understanding the Design Patterns in C++/Java.I guess Binders Design Patterns are based on C++ Design pattern(correct me). DO i have to understand UML as well to understand them. Plz explain or direct a link with test source code on the above.

PS: I am trying to understand this blog by Tetsuyuki Kobayashi and i am in no way related to him.

0 投票
1 回答
595 浏览

android - 失败的 Binder 事务文本文件

我必须从 96000 字节的文本文件中读取一些数据,以便绘制折线图。我尝试读取每 2 个字节并将它们组合成 2 个字节,然后我制作了 8 个数组,每个数组有 6000 个整数。但是我遇到了上述错误!如果我尝试只使用 1,2 或 3 个数组,它可以工作,但 4 个数组不能

有人可以帮我看看我在哪里做错了。我从昨天阅读了不同的讨论,并没有真正看到任何合适的答案。我得到的是内存/堆的问题。

这是我的代码。

这是我的 MainActivity

我的 LogCat 给出以下输出:

0 投票
0 回答
238 浏览

android - 从 IBinder (SyncAdapterBinder) 获取服务实例

我有一个用来同步我的联系人的服务,我想向它添加更多方法(我没有创建这个服务,我只是扩展它,我有点迷茫)。我会在某些情况下调用这些方法,所以我需要服务实例来执行这些调用。我看到在 Android 开发人员中,他们使用获取此实例LocalBinder的方法创建了类getService(),但我使用的是AbstractThreadedSyncAdapter

首先,我应该创建另一个服务来实现这些方法,还是可以使用与同步相同的服务?如果我可以使用相同的,我怎样才能获得服务实例?

0 投票
2 回答
1295 浏览

android - 如何从绑定服务与处理程序进行通信?

我目前正在通过我的应用程序使用的插件与外部服务进行通信。

绑定的服务最终会启动一个活动,然后应通知主应用程序活动已完成。

问题是,服务通过本地广播得到通知。我已经将 Messenger 存储msg.replyTo到一个变量中,所以我可以在 Handler 完成后访问它,但 Service 仍然被绑定。

它确实有效,但是我想完全确定不可能有 NullPointer,所以我不太喜欢这种方法。

有没有比将 Messenger 存储在变量中更好的方式与 Binder 进行通信?

这里有一些代码可以更好地理解:

0 投票
2 回答
2940 浏览

android - 如何检查两个 Android binder 代理对象是否相等?

我有一个关于 Android 的活页夹的问题。如果我理解正确,可以在进程之间传递 Binder。在服务端,有一个Binder对象(原始对象)。在客户端(在单独的进程中),有一个 BinderProxy 对象来处理 AIDL 数据编组。

我的问题是 - 你如何检查两个 BinderProxy 对象是否相等?我的意思是,它们在服务进程中引用相同的 Binder 对象。我们可以使用 equals() 方法吗?BinderProxy 对象是否与原始 Binder 对象具有相同的内存地址?

谢谢!

编辑:

回应大卫·瓦瑟的评论:

我为什么要这样做的原因解释起来有点复杂,但让我看看我能不能解释清楚——

远程服务提供了一个 AIDL API(客户端通过接收 onServiceConnected 中的 IBinder 来获取)。AIDL API,除其他外,包含两种方法——

IBinder getInterface ( String interfaceName );

void releaseInterface ( IBinder binder );

这个想法是客户端应用程序可以为不同接口的绑定器请求远程服务。接口实现的 dex 代码及其绑定器是动态加载到服务中的,并且事先不知道。该服务为客户端应用程序提供这 2 个 AIDL 方法,以根据接口名称访问那些动态加载的接口的绑定器。

所以说有App1和App2。每个都做'binder1 = getInterface(“SomeInterface1”);' 并为该动态加载的接口“SomeInterface1”获取活页夹。使用后,应用程序通过说'releaseInterface(binder1);'释放接口绑定器 以便服务可以卸载接口的 dex 代码并进行一些清理。

但是,除非 App1 和 App2都释放了接口绑定器,否则无法卸载接口 dex 代码。因此,在服务中,我为每个动态加载的活页夹维护一个引用计数。(比如说一个 Map 键{Binder} ==> value{reference count})。当应用程序执行 getInterface() 时,我会增加引用计数。当它确实 releaseInterface(binder1) 时,我应该减少引用计数。但是,为此,我需要检查 binder1 是否等于 Map 中的 binder 键。

请注意,活页夹已从服务(原始活页夹对象)传递到客户端应用程序(由 getInterface() 返回的活页夹代理)并再次返回到服务(作为 releaseInterface() 的参数 - 它仍然是代理,还是原本的??)。

App1 和 App2 可以为相同的接口名称获取不同的绑定器对象(接口的不同实现)。这就是为什么,我使用活页夹进行释放。

希望这不会太混乱!谢谢您的帮助。

卡提克

0 投票
2 回答
1636 浏览

android - 了解 dumpsys meminfo

我有两个问题。

  1. dumpsys meminfo,有一个号码叫Local Binders。这是什么意思?它只是一种本机指针吗?在什么情况下这个数字会增加?我观察到当这个数字增加到大约 1000 时,应用程序甚至模拟器都会崩溃。

  2. 在内存使用部分,有三列:nativedalvik、 和total、 和total=native+dalvik。那么为什么将 (nativedalvik) 两部分加在一起呢?堆不是dalvik指Java堆,它应该是Unix进程的数据部分的一部分吗?

0 投票
1 回答
87 浏览

android - 在模拟器上运行的命令不在安卓手机上

我在模拟器上运行了广告外壳并执行了以下命令:-

但是当我在我的安卓手机上运行 adb shell 并运行以下命令时

在这里我遇到了一个错误,说不能 cd 到 BINDER

谁能告诉问题是什么?

0 投票
1 回答
380 浏览

android - Android Binder 及其可能性

我有一个与 Android 的 Binder 组件有关的问题。当我在模拟器上使用 Android 应用程序时,可以对正在运行的本地服务器(用 java 编写)提供的服务进行远程过程调用。与 Binder 的进程间通信是否也适用于非 Android 应用程序?

或者你知道用 Android 做 RPC 的其他可能性吗?

0 投票
4 回答
2560 浏览

android - Android - 活页夹

我读了一篇关于 android 的活页夹的文章。文章说进程交换共享内存中的对象引用并且它比编组和解组更有效......但实际上在IPC机制中是否存在编组和解组?我有点困惑……

任何人都可以解释活页夹机制或链接到详细文章吗?

0 投票
2 回答
2918 浏览

android - Android Binder 内部结构

我正在开展一个项目,我们在其中向 android 系统添加了一些非标准的安全功能,但我在调整 Binder 时遇到了一些严重的问题。

有没有人对 Binder System 有深入的了解,并且知道 Binder 为什么会“阻塞”一个进程来传输 Parcel,以及接收进程是如何解除阻塞的?