消息中字符串的优雅解决方案

时间:2019-04-03 14:34:42

标签: android ipc message-queue parcelable

我正在编写一个旨在与其他应用程序绑定的Android服务。它使用Messenger作为IBinder

现在我遇到了一个问题:如果我想发送只包含Messagewhat的{​​{1}},我本来打算使用String 。 根据文档说明,这不起作用:

  

使用Messenger跨进程发送消息时,如果它包含框架类的Parcelable(不是由应用程序实现的),则只能为非null。对于其他数据传输,请使用setData(Bundle)。

这引发了两个(相关)问题:

  1. 为什么Android中的Message.obj不是String
  2. 有没有比为它创建一个Bundle并在那里设置我的String更好的“优雅”解决方案?

1 个答案:

答案 0 :(得分:1)

1)因为它与Java的String类兼容,该类不是Parcelable(因为Java标准库中不存在) 2)因为通常不需要这样做,所以在大多数情况下都可以直接通过有线方式发送而无需打包。您刚刚发现了一个怪异的死角案例。

必须说,在活页夹上使用消息有点奇怪。通常,您只是将数据作为单个参数发送到呼叫。