Android Wear Close Bitmap Asset Underlying Stream

时间:2014-07-18 22:36:49

标签: java android wear-os android-wear-data-api

我的代码可以创建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());

1 个答案:

答案 0 :(得分:1)

看看这一行:

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

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

但是,为了安全起见,您可以在调用flush()之前toByteArray()发送信息流,以防compress()暂时不这样做。