【问题标题】:Android Wear Close Bitmap Asset Underlying StreamAndroid Wear 关闭位图资产底层流
【发布时间】:2014-07-19 10:29:05
【问题描述】:

我有创建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());

【问题讨论】:

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


    【解决方案1】:

    通过查看这一行:

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

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

    不过,为了安全起见,您可以在调用toByteArray() 之前先flush() 流,以防compress() 尚未这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 2010-11-14
      • 2020-03-09
      • 2021-09-05
      • 2021-11-23
      • 2018-08-19
      相关资源
      最近更新 更多