如何在 Corona SDK 中仅将(远程检索的图像)存储在 RAM 上,而不保存文件?

Corona SDK 提供了一个功能,可以获取远程图像

其语法为:

? display.loadRemoteImage(url, method, listener [, params], ? destFilename [, baseDir] [, x, y])

我的问题是:如何直接将远程图像加载到 RAM 中,而无需在移动设备上存储它?我不想在 destFilename 存储它怎么办?

点赞
用户2735929
用户2735929

在没有将图像存储于设备上的情况下是无法显示图像的,所有浏览器都是这样。它们本地存储图像,直到不需要它们为止。

对你来说最好的选择是将其存储在临时目录中,这样当应用程序关闭或手机关闭或重新启动时,文件会丢失并不会占用硬内存。

你可以使用以下作为baseDir: system.TemporaryDirectory

这里是从Corona文档中获取的示例:

display.loadRemoteImage("http://coronalabs.com/images/coronalogogrey.png", "GET",networkListener, "coronalogogrey.png", system.TemporaryDirectory, 50,50 )

编辑

这是另一个答案中显示应用程序在一般情况下是如何运行的引用: [https://android.stackexchange.com/questions/80867/understanding-ram-sd-card-and-device-memory-of-an-smartphone](https://android.stackexchange.com/questions/80867/understanding-ram-sd-card-and-device-memory-of-an-smartphone)

RAM-随机存取内存-在您的手机上运行应用程序时,应用程序从设备内存加载到RAM中,就像在计算机上一样,主要目的是访问速度远远大于RAM。

在你的情况下,你正在运行时将远程图像加载到临时文件夹中。/ tmp文件夹在你的沙箱中,而且在移动存储器上。但是,你正在使用它在当前运行的应用程序上的RAM。

加载时,此图像被临时放置在RAM中的此文件夹中,以便快速高效地使用。在关闭应用程序之前,我假设你将清理临时文件夹。此图像永远不会被存储在临时文件夹中以供以后使用。它仅在运行时使用,即使用RAM。

我不能百分之百确定这一点,因为Corona没有任何关于此的文档。我清楚知道的只有1)RAM用于运行应用程序2)tmp文件夹通常在关闭应用程序之前清除。这些事实可用于验证在运行时使用的远程图像直接放置在RAM上。为了100%的保证,我们需要研究移动内存管理的专家。

将其视为变量。您的变量是在运行时创建并放置在RAM上以供临时使用。你在这里加载远程图像时正在做的正是同样的事情。如果图像位于应用文件夹中,则加载它将仅从内存中将其加载到RAM中。在你的情况下,你很可能使用RAM作为你的图像存储。

2016-04-28 16:44:16