我从smartwatch收到一个DataMap对象,其中包含两个DataMap对象,一个包含字符串列表(标题、字幕、内容……),另一个包含资产列表
List<DataMap> rootItemDataMap [...]
DataMap itemFieldsDataMap = rootItem.getDataMap(Constants.ROOT_ITEM_FIELDS);
DataMap itemImagesDataMap = rootItem.getDataMap(Constants.ROOT_ITEM_IMAGES);
当调用onDataChanged时,我转换字符串中的itemFieldDataMap和资产列表中的itemImagesDataMap。对于每一个资产,我希望转换位图中的资产,并将其放在位图列表中。但我有一个错误:
List<Bitmaps> imagesList = new ArrayList<>();
for (int j = 0; j < itemImagesDataMap.size(); j++) {
Asset asset = itemImagesDataMap.getAsset(Constants.EXTRA_IMAGE +j);
Bitmap bitmap = WearableUtils.loadBitmapFromAsset(mGoogleApiClient, asset);
imagesList.add(bitmap);
}
做不好工作的方法是LoadBitMapFromAsset:
public static Bitmap loadBitmapFromAsset(GoogleApiClient mGoogleApiClient, Asset asset) {
InputStream assetInputStream = Wearable.DataApi.getFdForAsset(mGoogleApiClient, asset).await().getInputStream();
return BitmapFactory.decodeStream(assetInputStream);
}
java.lang.OutOfMemoryError: Failed to allocate a 2531852 byte allocation with 1037608 free bytes and 1013KB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:649)
at com.mangomobi.showtime.contentmanager.WearableUtils.loadBitmapFromAsset(WearableUtils.java:71)
at com.mangomobi.showtime.contentmanager.ItemFactoryImpl.createItems(ItemFactoryImpl.java:48)
at com.mangomobi.showtime.contentmanager.WearableContentServiceImpl.onDataChanged(WearableContentServiceImpl.java:136)
at com.google.android.gms.wearable.WearableListenerService$zzc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.google.android.gms.wearable.WearableListenerService$zzb.dispatchMessage(Unknown Source)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
您可能希望首先检查是否有效地加载大位图,其中提到:
为了避免java.lang.outofmemory
异常,在解码位图之前检查位图的尺寸,除非您绝对相信源能够提供适合可用内存的可预测大小的图像数据。
您可以尝试使用一种方法,根据目标宽度和高度计算样本大小的二次方,如文档中的示例代码所示。如进一步讨论的,
问题内容: 我将输入流从Web转换为位图时遇到问题。仅当输入图像类型为.BMP(位图)时,才会出现问题。在这种情况下: bitmapFactory.decodeStream返回null 。 有什么提示如何解决此问题,或者应该在哪里继续调试? 平台:Android(蜂窝) 问题答案: 谢谢@Amir指出日志。发现了一条线: 这似乎是一个普遍的问题。进行搜索后,我找到了解决方案。 我以前的代码: 起作
我有一个输入流,其中包含XML数据,我想在返回输入流之前对其进行解析。 当然,我可以将流保存为字节数组,并从中返回一个新的InputStream,或者 在“myObj”上创建第二个InputStream。 但是有什么方法可以“即时”解析流吗? 编辑: 基本上,我正在寻找一种在解析后重用流的方法。在不消耗流的情况下解析流,分别在解析后重置流。 解决方案: 我找到的解决方案是使用BufferedInp
我想创建基于自动完成输入的动态谷歌地图。我把代码写成:- 地图没出现。请解决它..我通过参考https://youtu.be/2n_r0ndekgc上的视频编写了代码
对手转向 游戏等待用户 用户将文本键入JtextField并按Enter键 游戏执行玩家命令 对手再次转向..
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据。 例如,假设操作系统的堆栈已收到三个数据包: 由于基于流的协议的这种通用属性,在应用程序中以下面的碎片形式(只
本文向大家介绍Python最基本的输入输出详解,包括了Python最基本的输入输出详解的使用技巧和注意事项,需要的朋友参考一下 输出 用print加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下: print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出: print会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串