0

最近我开始研究移动开发。我从 Android 原生开始,因为它可能是应用程序将发布到的第一个移动操作系统,但是在学习一门新语言并尝试适应新的 IDE 和 API 之后,我切换到了 PhoneGap,因为它始终计划将应用程序安装在多个操作系统上。此外,我有多年的 Web 开发经验。

所以现在我遇到了我面临的问题,因为我的应用程序将处理大量图像,是如何存储所有这些图像。我对可以做什么有几个想法:

  1. 拥有某种托管图像的云存储,然后当应用程序运行时,它会将所有图像下载到设备上,但这会在设备上占用大量存储空间,并且可能需要很长时间。

  2. 云存储,但是当应用程序运行时,它将它们下载到缓存中以仅使用当前需要的那些,然后在用户完成它们后丢弃它们,甚至可能在需要时尝试只下载一个。

关于性能和设备存储,第二种方法对我来说最有意义,但它会迫使应用程序始终在线。在第一个示例中,这不是必需的。我不禁想到有更好的方法来解决这个问题。

还有什么是本地化的最佳途径,这意味着对原生 API 的更严格控制,但失去了通用性的功能,并且必须分别为每种语言的不同操作系统做同样的事情,或者以某种方式保持混合环境?

4

2 回答 2

1

我的应用程序做了类似的事情,但我们都是用 Java 做的,所以如果你决定回到那条路,这可能会有所帮助。我们在云中托管了大量图像(超过 30,000 张)。用户可以浏览这些图像(我们预先生成了每个图像的缩略图),在客户端我们有以下内容:

  1. 作为 的子类的占位符图像,ImageView它还处理执行下载图像的异步任务。
  2. 使用 Android 的LRUCache类对图像进行内存缓存。缓存在启动时初始化为可用内存的大约 1/8。
  3. 一个 DiskLRU 缓存,用于将图像存储在手机的 SD 卡上。我目前正在使用Jake Wharton 的 DiskLRUCache

这做得不错,但您还需要查看 Google 的管理位图文章,并了解如果您在 Gingerbread 或更早版本上运行,您将如何回收位图。

哦,我差点忘了,你可能还想看看毕加索

于 2013-11-08T17:37:53.220 回答
1

Phonegap/cordova 应用程序只是在 web 视图中具有大部分功能的原生应用程序,因此您可以利用 picasso 代码(通过原生插件)并使用 phonegap。

也就是说,我可能会做 Carl 所做的事情,但是为 PhoneGap 编写一个插件,为每个平台调用不同的本地代码。

既然您知道该应用程序将是跨平台的,那么试用 PhoneGap 以查看它是否可以表现得足够好是有意义的。

你也可以看看在 js 中做缓存,利用这里的一些想法:https ://github.com/bperin/imageCache

于 2013-11-08T22:08:23.540 回答