【问题标题】:startActivity(intent) not working in Google glassstartActivity(intent)在谷歌眼镜中不起作用
【发布时间】:2014-08-01 05:26:34
【问题描述】:

我正在使用沉浸模式为 Google Glass 开发应用程序。

我正在使用 start Activity 使用下面的代码在不同的图块之间切换。

Intent showImageDetails = new Intent(MainActivity.this, CapturedImageActivity.class);
showImageDetails.putExtra("IMAGE_DATA", data);
startActivity(showImageDetails);

data 变量保存捕获图像的字节数组。

很少时间设备无法启动 Activity 并退出应用程序并返回 OK Glass 磁贴。

有人观察到这个问题吗?

我以 charades 作为 API 示例的示例。

【问题讨论】:

  • 添加错误日志(如果有)?
  • 没有错误日志。所有代码都正确执行,没有错误,问题不是 100% 可重现的。
  • @user2660059 你能提供更多你的“数据”变量吗?
  • 它是一个用于捕获图像的字节数组。捕获后的图像大小约为 459238 字节(jpg 文件格式)。我能够找到问题的模式。如果我的玻璃太热(经过多次使用),那么我可以非常频繁地重现该问题。然后唯一的解决方案是关闭 Glass 并在其冷却后重新启动。有没有其他人观察到这个问题?如果需要更多信息,请告诉我。 TIA。

标签: android android-intent android-activity google-glass google-gdk


【解决方案1】:

根据您的评论,我猜测您的图片太大而无法故意发送。有没有注意到日志中出现 JAVA BINDER FAILURE 错误或者TransactionTooLargeException:

Binder 事务缓冲区有一个有限的固定大小,目前为 1Mb,由进程正在进行的所有事务共享。因此,当有许多事务正在进行时,即使大多数单个事务的大小适中,也会引发此异常。

另见Passing data of a non-primitive type between activities in android:

你不想做的是通过额外的东西传递大的东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望通过额外的内容传递这些 - 使用静态数据成员(听起来很恶心)。 Intent 被设计为跨进程工作,这意味着会进行一定数量的数据复制,当不需要大数据时,您希望避免这种情况。

我认为如果您的图像很大,最好传递图像的 URI 或 ResourceID,而不是图像本身。希望这会有所帮助。

【讨论】:

  • 我正在将文件写入 sdcard 并在另一个活动中读取它。但我仍然不太确定为什么android在无法启动活动时无法抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
相关资源
最近更新 更多