在NativeScript for ListView中从服务器获取图像时,应用程序无响应

时间:2016-04-28 07:09:46

标签: nativescript

我知道NativeScript是单线程的。构建一个应用程序,需要在列表视图中的屏幕之间显示30-40个图像。但是,一旦下载,如果URL被直接绑定,则不会缓存图像。假设在first-page.xml中的代码段

<ListView images={{images}}>
<Image src={{theImageUrl}}></Image>
</ListView>

在第一页和第二页之间来回移动时,图像会重新下载而不会被缓存。为了防止这种情况,为每个图像实现了以下逻辑:

imageSource.fromUrl("theImageUrl").then(function(res){
//code to save the image to either temp or the documents folder 
});

但是,40张图片需要加载至少20-22秒,导致应用初始化时间过长。

解决方法可能是在后台下载图像并在下载完成后将图像src属性(theImageUrl)切换到本地图像路径,然后让用户看到该应用并与之交互。

使用此方法应用程序无响应,直到下载所有图像,没有捕获屏幕点击。

有可能解决这个问题吗?有人遇到过这个吗?将图像下载放在主UI线程上是导致我想的问题。

1 个答案:

答案 0 :(得分:0)

说到Android处理图像时,内存/性能管理是一个常见的挑战。克服此类问题的最佳方法是通过像 Fresco 这样的库。您可以使用this NativeScript插件,使您可以在{N}应用程序中使用Android Fresco库,并显示来自Web或本地存储的图像。

我们正在努力升级该插件,将Fresco库的大部分功能带到{N}插件,例如支持动画图像,背景和失败占位符,进度条,转角,动态大小调整(百分比)等等。