【发布时间】:2017-10-08 00:21:15
【问题描述】:
我无法确定这一点,但我的应用程序似乎正在崩溃,因为加载资源的时间过长。
我相信它来自我对 CreateCanvasResourcesAsync 的调用
public void OnCreateResources(CanvasControl sender, CanvasCreateResourcesEventArgs args)
{
args.TrackAsyncAction(CreateCanvasResourcesAsync(sender).AsAsyncAction());
}
private async Task CreateCanvasResourcesAsync(CanvasControl sender)
{
if (_tiles.Keys.Count > 0) return;
await LoadImageAssets(sender, _tiles);
}
private async Task LoadImageAssets(CanvasControl canvas, IDictionary<int, CanvasBitmap> dictionary)
{
dictionary.Add((int)TileTypes.Tile1, await CanvasBitmap.LoadAsync(canvas, @"Assets/Tiles/Tile1.png"));
dictionary.Add((int)TileTypes.Tile2, await CanvasBitmap.LoadAsync(canvas, @"Assets/Tiles/Tile2.png"));
// etc.
}
我正在加载大约 200 个位图,总大小约为 4MB。
有其他人经历过吗?如果是这样,您是否想出了解决方法?
我发现一些文章提供了在运行时加载所需资源的建议,但它们似乎不适合我遇到的问题。
【问题讨论】:
-
CreateCanvasResourcesAsync(...)的实现是什么样的? -
我更新了描述以包含有关 CreateCanvasResourceAnsync(...) 调用的方法的信息。
-
是否可以从外部加载位图,然后将它们传递给视图?为了验证图像本身没有问题,我将它们从外部加载到视图中而没有问题。如果有办法将图像注入到视图中,那将是一个很好的解决方法。
-
快速提问,您是说 4MB 的 JPEG/PNG 数据吗?因为一旦将 JPEG 或 PNG 加载到位图中,它就会被解压缩。预计内存使用量将远高于 4MB。
-
是的,字典中有大约 4MB 的 JPG/PNG 数据。我不知道有 PNG 解压缩。