SourceNode --| |--> StorageLocation (remote)
|--> MyService <-ipc-> CallerApp --| (Android)
手机内有 MyService
和CallerApp
; StorageLocation可能位于手机内部,也可能位于手机外部的另一个远程节点。方案如下:
这里的问题是如何有效地在MyService和CallerApp之间进行IPC。在某些情况下,文件X将本地保存在CallerApp的专用存储上。在其他情况下,文件X将被发送到远程存储位置,并且电话在某种程度上用作传输的代理。您可以将StorageLocation视为本地电话存储或远程云提供商。
pipe pair
和transfer thread
尝试使用与this one类似的方法,但我在高端手机上获得的速度超过5 KB /秒在MyService和CallerApp之间传输数据。如果传输数百MB,这太慢了。ContentProvider
,但根据我的理解文件,X必须首先保存到MyService中,然后CallerApp才能使用它。文件X无法首先保存到MyService中,然后传递到CallerApp,因为它可能非常大,甚至无法适应可用的存储空间(在这种情况下,手机只是数据的代理)。 / LI>
local sockets
,但如果管道对很慢,我不知道它会不会更好。有关如何解决此问题的任何见解,即有效地在MyService和CallerApp之间传输大量数据?
(另外,我可以直接从MyService写入CallerApp 的私有存储位置而不用使用管道对作为中介,即MyService将从SourceNode套接字读取并写入一个OutputStream句柄在CallerApp中创建的文件?)