Android 如何通过 Socket 高效率发送 int 数组?

2020-05-20 09:54:18 +08:00
 atfeel

我同一台手机两个 APP,A 和 B,他们通过 SOCKET 通信,A 是客服端,B 是服务端

A 要发送一个长度为 90,0000 的 int[] 给 B

SOCKET 不能直接发送 int[],要转成 byte[]才能发送。

由于数据量大,把长度为 90,0000 的 int[]转成 byte[]大概要 35ms

由于特殊原因我不想浪费这 35ms 。

另外,B 端因为最终需要使用的是 int[],A 把 int[]转成 byte[]再发送

B 接收到 byte[]还得转回 int[],也是需要 35ms

等于白白浪费了 70ms 。

有没有什么办法,能让 B 快速获取到 A 的 int[]呢?

也不是非得用 SOCKET 不可,只要能让 B 快速获取到 A 的 int[]就行了

A 的 int[]是不固定的

各位 V 友有办法吗?

6371 次点击
所在节点    Android
24 条回复
miaoxia
2020-05-20 16:13:52 +08:00
1. AIDL 直接传 int[]
2. 分包传
ruixianxx
2020-05-20 16:24:28 +08:00
@miaoxia AIDL 正解
atfeel
2020-05-23 21:31:12 +08:00
@miaoxia 感谢靠谱
LLaMA2
2020-05-29 09:43:00 +08:00
我有个疑惑,int -> byte 难道不会有精度丢失?
楼上有很多套路都是好套路,
想简单点就用文件,两边同时操作,一边只读一边只写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/673489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX