下载到临时文件夹然后覆盖原始文件 - 速度问题?

时间:2013-12-09 18:12:43

标签: android webview android-webview android-video-player

我有一个应用程序可以下载单个html文件和各种图像,有时还会下载mp4视频。

初次下载后,后台服务每15分钟重复下载一次。

该服务检查是否有任何新文件以及是否有任何文件被修改(在这种情况下,它通常是将被修改的html文件并将下载一些新图像)

我有一个显示html文件的webview,在后台服务成功下载一些新资产后,webview会刷新。

然而,当服务正在下载时,应用程序将使用这些文件,在webview中显示它们(视频使用视频视图处理,使用javascript桥,翻转两个视图)

所以,我的问题。

在看到当前应用程序的一些可能问题后,我希望后台服务将资源下载到临时文件夹,而不是使用的主文件夹(我使用下载中创建的子文件夹)

然后,一旦下载完成,我将“停止”webview,将文件“tmp”复制到真实文件夹,然后重新启动webview。

逻辑听起来不错,但我担心速度。要复制的文件的重量可能在100mb(可能更多,希望更少,由于带宽问题),那么Android有多快可以复制这些文件?

理想情况下,过渡需要在几秒钟内完成。

有人可以就此提出建议吗?

是否有更好的方法来处理这种情况?

2 个答案:

答案 0 :(得分:0)

将临时目录放在主数据目录下,然后使用原子rename(2)调用将新文件移动到位。 (这仅在源和目标目录位于同一文件系统内时才会原子化,因此建议放置临时文件。您还可以将它们作为FILENAME.EXTENSION.new放入相同的目录中,然后重命名它们。在设计文件名时,像往常一样警惕tempfile比赛;如果可以的话,使用像mkstemp(3)之类的东西来创建它们。)

答案 1 :(得分:0)

您可以将WebView指向“临时”目录,然后在后台删除原始目录吗? (然后你总是使用“临时”目录)。