我怎么知道我的GCM消息是否足够小(<4kb)才能发送?(如何获取String的大小?)

bol*_*ing 5 java string android google-cloud-messaging

我想直接在GCM(Google Cloud Message)中嵌入数据,以帮助我的应用程序跳过我的服务器往返.

谷歌称,总数据有效载荷需要达到4kb以内.使用[key,value]对发送数据.假设我做了这样的事情:

 String key = "key";
 String data = "data";
 Message message = new Message.Builder().addData(key, data).build();
 sender.send(message, regId, 5);
Run Code Online (Sandbox Code Playgroud)

我怎么知道它String data是否小于4kb?据我所知,没有办法真正做到String.getSize()或类似.

如果好奇,请链接到文档:http: //developer.android.com/training/cloudsync/gcm.html#embed

Rag*_*ood 5

您可以使用以下命令获取String的字节:

String s = "some text here";
byte[] b = s.getBytes("UTF-8");
int bytes = b.length;
Run Code Online (Sandbox Code Playgroud)

请确保指定编码String,因为不同的编码可能会占用相同String的不同字节数.在上面的例子中,UTF-8用作编码.

要将字节转换为kB,只需除以1024.

编辑:这是关于Geobits评论中Java中不同编码的字节空间一个很好的详细解答.