Ant*_*l0n 7 multithreading android ipc aidl android-binder
我希望每个应用程序都能够向我的服务发送数据。因此我需要进程间通信。我能找到的每个页面都建议使用 Messenger、AIDL 或 Intents (BroadcastReceiver)。到目前为止,我通过构建一些测试应用程序可以发现,BroadcastReceiver 非常慢,如果在while(true)循环内使用多个线程发送消息,消息可能会在没有通知的情况下丢失。AIDL 和 Messenger 不仅实现起来很复杂(需要服务,活页夹,...)而且可以提供奇怪的行为,例如当使用多线程发送时导致 RemoteException(!!!失败的 BINDER TRANSACTION !!!)与 AIDL 就在使用 oneway 关键字。我想确保交货有保障。oneway在应该保证交货的情况下甚至有理由使用吗?
尽管如此,LocalSocket 似乎非常易于使用(不需要服务,就像 java socket 一样工作)。客户端应用程序只需打开一个 LocalSocket,连接到提供的地址,然后while(true) outputstream.writeObject();
使用 LocalSocket 时是否有任何缺点,因为 android 开发人员页面说“某些应用程序尝试使用传统的 Linux 技术(例如网络套接字和共享文件)来实现 IPC。我们强烈建议您改用 Android 系统功能进行 IPC”,但没有进一步评论在这
使用 LocalSocket 时有什么缺点吗
没有框架级别的安全性LocalSocket。虽然您可能“希望每个应用程序都能够向我的服务发送数据”,但用户可能不会,这就是为什么标准 IPC 可以受到权限保护的原因。
startService()并且bindService()会导致创建您的服务实例,如果需要处理请求,甚至会为您启动一个进程。您的服务不会一直运行。所以,你需要startService()或bindService()无论如何。
| 归档时间: |
|
| 查看次数: |
1826 次 |
| 最近记录: |