繁体   English   中英

在Android进程之间安全地快速传递大文件

Passing large files on the fly between Android processes securely

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

  SourceNode --|                                  |--> StorageLocation     (remote)
               |--> MyService <-ipc-> CallerApp --|                        (Android)

MyServiceCallerApp位于手机内部; StorageLocation可以位于电话内部,也可以位于电话外部的另一个远程节点。 该方案如下:

  1. CallerApp通过AIDL告诉Android服务获取文件X; 文件X非常大。
  2. MyService已连接到远程SourceNode,并开始从该远程节点接收X。
  3. 现在,当MyService从SourceNode接收X时,它需要在读取时将读取的字节传递给CallerApp。
  4. 结论:使用手机作为代理时,数据从左侧的SourceNode一直到右侧的StorageLocation。 MyService和CallerApp是不同的过程。

这里的问题是如何有效地在MyService和CallerApp之间进行IPC。 在某些情况下,文件X将本地保存在CallerApp的专用存储中。 在其他情况下,文件X将被发送到远程存储位置,并且电话以某种方式充当传输的代理。 您可以将StorageLocation视为本地电话存储或远程云提供商。

  • 我尝试使用类似于这种方法的方法,使用pipe pairtransfer thread但是在高端电话上,我在MyService和CallerApp之间传输数据的速度仅超过5 KB /秒。 如果传输数百MB,这太慢了。
  • 我正在考虑使用ContentProvider ,但是根据我的理解,必须先将文件X保存到MyService中,然后CallerApp才能使用它。 文件X不能先保存到MyService中,然后再传递到CallerApp中,因为它可能太大,甚至无法容纳到可用的存储空间中(在这种情况下,电话仅是数据的代理)。
  • 还没有尝试使用local sockets但是如果管道对很慢,我不知道它是否会更好。

关于如何解决的任何见解,即如何在MyService和CallerApp之间高效地传输大量数据?

(此外,是否可以使用管道对作为中介直接从MyService写入CallerApp的私有存储位置,即MyService将从SourceNode套接字读取并写入在CallerApp中创建的文件的OutputStream句柄?)

问题暂未有回复.您可以查看右边的相关问题.
1 如何在两个进程之间安全地共享文件描述符?

这是针对我在此之前的问题的 ,针对UNIX的后续问题 。 我想知道一个进程打开的文件描述符是否可以安全地用于分支进程。 我通过同时运行数百个进程来运行了一些测试,所有这些进程都连续写入同一文件描述符。 我发现: 当fwrite()调用最多为8192字节时,所有调用均已完美 ...

2 在允许的进程之间传递Windows安全令牌

想象一下,我有一个在Windows下作为特定用户运行的现有进程。 是否允许该进程获取其当前令牌(使用类似OpenThreadToken和DuplicateTokenEx的东西),将其传递到同一台机器上的另一个进程(可能通过网络套接字或其他一些IPC),然后期望该进程能够用它来调用CreateP ...

4 如何在python中的线程之间安全地传递变量值

我在python文档上读到Queue.Queue()是在不同线程之间传递变量的安全方法。 我真的不知道多线程存在安全问题。 对于我的应用程序,我需要使用可以从多个不同线程访问的变量来开发多个对象。 现在,我只有线程直接访问对象变量。 我不会在这里显示我的代码,因为代码太多了,但是这里有一 ...

6 Java发生-在澄清之前,以及如何安全地在两个线程之间来回传递对象

我想以线程安全的方式在使用任意对象的两个线程之间建立一个简单的“协议”,而不是专门针对多线程。 该协议应该是只有线程之一拥有该对象,并且只有拥有者才能读/写该对象。 我在 此处阅读了有关事件的信息,但不确定该讨论是仅涉及单个字段还是整个对象。 以下两种解决方案是否适用于“所有权协议”? ...

9 “在进程之间传递文件描述符”是如何工作的?

我读了史蒂文斯关于在进程之间传递描述符的例子。 总而言之,他的主程序分叉了一个子程序,该子程序执行另一个程序,该程序打开一个文件,通过 unix 域套接字将整数fd传递回父级并退出。 Parent 从套接字接收这个fd ,并使用fd直接读取文件。 出现两个问题: 父进程和子进程是两个独立的 ...

10 在进程之间异步传递文件描述符

我正在实现一个Web服务器,需要在其中使父进程执行以下操作: 在开始时fork()新工作进程(一个池)。 永远循环,侦听传入的请求(通过套接字通信)。 将套接字描述符(由accept()函数返回)放入队列。 并且工作进程将执行以下操作: 创建后,将永远 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM