我的代码可以创建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());
答案 0 :(得分:1)
看看这一行:
Asset asset = Asset.createFromBytes(stream.toByteArray());
很明显,Asset实例没有引用ByteArrayOutputStream
,因为它收到了对byte[]
的引用,而不是对流本身的引用。所以你应该能够在那之后安全地关闭它。
但是,为了安全起见,您可以在调用flush()
之前toByteArray()
发送信息流,以防compress()
暂时不这样做。