0

我有创建一个与可穿戴设备PutDataRequest同步的代码。Bitmap我的问题是,我需要ByteArrayOutputStream在下面的代码中关闭它,还是DatApi需要它保持打开状态?

我很确定它需要关闭。只是有一个大脑放屁的时刻。

PutDataMapRequest putRequest = PutDataMapRequest.create(path);
DataMap map = putRequest.getDataMap();

ByteArrayOutputStream stream = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, 100, stream);
Asset asset = Asset.createFromBytes(stream.toByteArray());
map.putAsset(mapKey, asset);

Wearable.DataApi.putDataItem(connection.getClient(), putRequest.asPutDataRequest());
4

1 回答 1

1

通过查看这一行:

Asset asset = Asset.createFromBytes(stream.toByteArray());

很明显, Asset 实例没有对 的引用ByteArrayOutputStream,因为它收到了对 的引用byte[],而不是对流本身的引用。因此,在那之后您应该能够安全地关闭它。

但是,为了安全起见,您可以flush()在调用之前进行流式传输toByteArray(),以防万一compress()还没有这样做。

于 2014-07-19T02:29:05.863 回答